使用 VBA 从 Excel 打开和关闭 Access 数据库 - Access 宏错误

Posted

技术标签:

【中文标题】使用 VBA 从 Excel 打开和关闭 Access 数据库 - Access 宏错误【英文标题】:Open and Close an Access Database from Excel using VBA - Access Macro Error 【发布时间】:2015-10-09 20:40:35 【问题描述】:

运行 Excel VBA 循环以执行以下操作: (1) 开放存取数据库 (2)在Access数据库中运行宏导入数据 (3) 完全关闭Access数据库

Excel VBA 循环在第一次迭代时工作正常,但在第二次迭代时在第一个 Access 宏处停止。如果禁用以下 2 个 Excel VBA 步骤,循环将按需要运行(除了在每个循环结束时未关闭数据库): (1) oAccess.DoCmd.Close (2) oAccess.DoCmd.Quit

知道如何在每次循环迭代结束时完全关闭数据库(不打开 shell)并让宏在后续迭代中运行吗?谢谢。

Dim DataBaseLoc As String
Dim oAccess As Access.Application
For K = First To Last 
     Set oAccess = New Access.Application
     oAccess.Visible = True
     If Z = "" Then DataBaseLoc = "C:\AutoInsight.mdb"
     If Z <> "" Then DataBaseLoc = "C:\AutoInsight_X.mdb"
     oAccess.OpenCurrentDatabase DataBaseLoc
     If Z = "" Then Set ObjAccess = GetObject("AutoInsight.mdb")
     If Z <> "" Then Set ObjAccess = GetObject("AutoInsight_X.mdb")
     With ObjAccess
          DoCmd.RunMacro "mcr_Import_Parts"
     End With
     With ObjAccess
          For i = 1 To 2
               If i = 1 Then DoCmd.RunMacro "mcr_Import_C"
               If i = 2 Then DoCmd.RunMacro "mcr_Import_I"
          Next i
     End With
     oAccess.DoCmd.Close
     oAccess.DoCmd.Quit
Next K

【问题讨论】:

【参考方案1】:

试试这个:

    End With

    Set ObjAccess = Nothing
    oAccess.DoCmd.Close
    oAccess.DoCmd.Quit
    Set oAccess = Nothing
Next K

VBA 最终应该注意到 ObjAcessoAccess 引用的对象不再有效并处理它们,但通过将变量设置为“无”来使事情变得明确会很有帮助。当变量没有超出范围时尤其如此(这里就是这种情况)

【讨论】:

添加了“Nothing”步骤,仍然收到运行时错误2486,“您目前无法执行此操作”

以上是关于使用 VBA 从 Excel 打开和关闭 Access 数据库 - Access 宏错误的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA,排序,保存,关闭,然后打开

访问中的 Vba 代码循环遍历文件夹中的所有 excel 文件,打开、保存和关闭它们

防止 Word VBA 中的 Excel 提示

从 Access 2010 VBA 打开 Excel 2010 文件

在访问 vba 的 excel 文件中未启用显示警报

excel vba做出一个打开文件对话框: