我试图用这个报告进行交流,并写了VBA执行各种任务,然后我在“RunAll”子目录中依次调用它们。我的数据从Access查询到我的工作簿中的数据透视表中的选项卡。QueryTable.Refresh导致不完整的OLE操作;如何完成?
我发现,当我运行此:
Sub QueryTableRefresh()
ActiveWorkbook.Sheets("data").Activate
Range("A2").Activate
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
它创建与Access的incompelte OLE操作,这会导致访问的只读实例,当我运行下面的打开(“TableRefresh”是与删除功能,并追加查询):
Public Sub RefreshAccessTables()
Dim acApp As Object
Dim db As Object
Set acApp = CreateObject("Access.Application")
acApp.OpenCurrentDatabase ("P:\Reports\Daily Origination Volume\Daily Origination Volume.accdb")
Set db = acApp
acApp.Run "TableRefresh"
acApp.Quit
Set acApp = Nothing
End Sub
只读实例防止删除和追加查询的书写动作。这并不是这两者在我的RunAll中运行的顺序,但是工作流将需要RunAll在进行更新时再次运行,这会导致冲突。
我已经运行从Excel多次访问功能背靠背并没有问题,直到我运行的QueryTable刷新。 Refreshall导致相同的问题。
如何在Excel中只更新我的查询表,没有离开这个OLE动作不完整?