【发布时间】:2015-10-27 00:57:54
【问题描述】:
我需要使用 VBA 从 Access 表单+按钮在 Excel 电子表格中调用和执行 VBA。
我有几个 Excel 电子表格连接到我的 Access 数据库。我使用 VBA (C:\CDR & Project Inventory Reports\RebuildDB) 创建了一个单独的数据库来刷新和重建我的源数据库和报告工作簿。我还创建了一个单独的工作簿来刷新我的所有其他报告(C:\CDR & Project Inventory Reports\RefreshReports)。该 .xlsm 的模块 15 将调用我的所有其他模块来刷新这些报告。
在执行代码的 Excel 部分之前,我的所有代码都与重建数据库有关。目前,Excel 部分如下所示:
Dim oXLApp As Object
Set oXLApp = CreateObject("Excel.Application")
oXLApp.Visible = True
oXLApp.Workbooks.Open ("C:\CDR & Project Inventory Reports\RefreshReports.xlsm")
Debug.Print "Open report refresh code"
Debug.Print "refreshing all spreadsheets"
oXLApp.Run "RefreshReports.Module15" 'refreshes all CDR and Proj Inv spreadsheets
DoEvents
Debug.Print "Refresh completed"
oXLApp.ActiveWorkbook.Close (True)
oXLApp.Quit
Set oXLApp = Nothing
Debug.Print "Release object"
我遇到的问题是 oXLApp.Run 实际上并没有执行它需要的 VBA。它调用它,然后立即关闭。有没有其他方式调用它会导致代码实际运行?
【问题讨论】:
-
你在
resume next里面吗?如果是这样,请将其删除。你看到 debug.prints 了吗?请注意,在现代版本的 Windows 中,对 C:\ 的写访问受到限制。 -
您调用宏的行仅指向
Module,它需要指向特定的Sub@MacroMan 的链接是一个很好的资源来纠正这个问题