【发布时间】:2021-02-13 06:54:00
【问题描述】:
每当我尝试执行以下代码时,都会收到以下消息。
Sub Refresh_Pivot()
Dim AWB As Workbook
Dim pvtTable As Object
Dim appAccess As Object
'Save workbook
Set AWB = ActiveWorkbook
AWB.Save
'Open Access Application
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "S:\AMA\MPF\MPF Projects\MPF Loss Emergence\MPFV4.accdb"
appAccess.Visible = True
'Set Message bar in excel t o notify user of update process
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Retrieving information, please be patient...."
'Execute Access Macro containing lineup of queries and scrubs
appAccess.DoCmd.RunMacro "0_Retrieve_Scrub" '<-- As it appears in the Macro Group in the Access Interface.
'Close Access
appAccess.DoCmd.Quit
'Return message bar to original status
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
Set pvtTable = Worksheets("1. Roll Rate Pivots").Range("C13").PivotTable
pvtTable.RefreshTable
Columns("B:B").EntireColumn.AutoFit
Columns("C:j").Select
Selection.ColumnWidth = 13
'Notify user process has completed
MsgBox ("Update complete")
End Sub
它基本上会打开一个 Access 数据库,运行一个 Access 宏并关闭 Access。我与触发此代码的同一个 excel 文件中的宏创建的表有一个 ODBC 连接。我在 excel 2007 中成功运行。我们最近升级了 office 2013,我们开始收到此消息。当我们调试时,它会突出显示这行代码。起初我虽然它与该版本的对象库有关,但检查了所有最新的。有没有人遇到过类似的问题。任何帮助将不胜感激。
appAccess.DoCmd.RunMacro "0_Retrieve_Scrub"
【问题讨论】:
-
Office 2013 是 64 位版本吗?您可以使用在 Access 中检查您的链接表管理器以确保它仍然正确连接吗?宏是使用 RunCode 运行 VBA 函数还是逐步访问命令?
-
我们运行的是 32 位版本的 Office 2013。真正奇怪的是,当我将代码复制到一个全新的文件(当然是注释掉数据透视表刷新)时,它执行得很好。 "Docmd" 是一个 Access vba 方法。
-
可能是安全设置?尝试在 Excel 和 Access 中将宏设置设置为“激活所有宏”。