使用 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 最终应该注意到 ObjAcess
和 oAccess
引用的对象不再有效并处理它们,但通过将变量设置为“无”来使事情变得明确会很有帮助。当变量没有超出范围时尤其如此(这里就是这种情况)
【讨论】:
添加了“Nothing”步骤,仍然收到运行时错误2486,“您目前无法执行此操作”以上是关于使用 VBA 从 Excel 打开和关闭 Access 数据库 - Access 宏错误的主要内容,如果未能解决你的问题,请参考以下文章
访问中的 Vba 代码循环遍历文件夹中的所有 excel 文件,打开、保存和关闭它们