excel - Excel 在尝试连续运行类似的 VBA 宏时崩溃
问题描述
我对 VBA 比较陌生,但是我已经能够找到代码和解决方案来满足我正在从事的项目的大部分要求。但是,我一直无法找到以下问题的解决方案。
我在同一个目录中有 4 个 DBF 文件,它们链接到一个程序\应用程序,该程序将数据从它们导入到程序中。我正在尝试将数据从 Excel 工作簿导出到这些 DBF 文件。
我发现下面的代码已经适应了我的情况。为了让它工作,我发现我首先需要为每个 DBF 文件创建一个 .accdb 文件,方法是使用 Access 打开和关闭它们。然后,我使用 4 组类似代码创建了 4 个宏,以将数据导出到 4 个 DBF (.accdb) 文件中。我还在代码中将 Microsoft.Jet.OLEDB.4.0 更新为 Microsoft.ACE.OLEDB.16.0 并启用了 Microsoft ActiveX Data Objects 6.1 Library。
Sub ADOFromExcelToDBF()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=C:\FolderName\DataBaseName.dbf;"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "TableName", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 3 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("FieldName1") = Range("A" & r).Value
.Fields("FieldName2") = Range("B" & r).Value
.Fields("FieldNameN") = Range("C" & r).Value
' add more fields if necessary...
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
我遇到的问题是,虽然宏都单独工作,但如果我尝试一个接一个地运行每个宏,Excel 会崩溃。在尝试运行第二个宏时,一个宏(无论哪个宏)在 Excel 崩溃之前始终可以工作(没有错误消息 - Excel 关闭,当我重新打开它时,它说它已恢复工作簿)。
我发现它们都可以正常工作而不会崩溃的唯一方法是在运行每个宏后关闭并重新打开 Excel。
我想知道是否有人知道为什么会发生这种情况以及是否有解决方案?
解决方案
推荐阅读
- android - NoSuchMethodError:类“_Type”没有实例获取器“imgPath”
- python - 给定一个向量或列表,如何制作一个从一个开始的数字填充的对称矩阵?
- git - bitbucket.org:权限被拒绝(公钥)
- python-3.x - 将大量数据(字典)转换为表格
- javascript - 当我使用@react-google-maps/api 时,为什么 react-select 会中断?
- python - 我的 SPSA(同时扰动随机近似优化器)的实现有什么问题?
- r - 从 markdown 到 Word 的表格看起来没有格式化
- jupyter-notebook - jupyter nbconvert 命令运行良好,而“下载为”菜单命令导致错误“在 PATH 上找不到 xelatex”
- c++ - Trie数据结构的实现
- python - 对具有不确定性的两个数据点进行线性拟合的置信区间