我有一个主要在Access中运行的自动化流程。但是,在中间,它将一些数据放入Excel中以将其刷入正确的形式(它比在Access中快得多),最后它打开另一个Excel文件并将来自某些Access查询的数据放入Excel文件中。对于从Excel到Access的这些连接,我通过进入Excel并执行数据来完成所有这些 - >获取外部数据 - >从Access,然后选择Access文件和我想从中获取数据的查询,并告诉Excel将其放入表中。
所以,我这样做了一次然后我希望能够运行这个简单刷新数据的自动化过程。为了刷新数据,我做了一行:
Worksheets("Data").Range("A1").ListObject.QueryTable.Refresh _
BackgroundQuery:=False
问题是,有一半的时间(我无法弄清楚它为什么会这样做而不是另一次),它说“你想连接到路径\文件名吗?”我当然知道,桌子怎么刷新?因此,这会停止自动化。即使我点击是,我仍然无法让它继续下去。如果单击“是”,则会打开“数据链接属性”。单击“确定”后,将打开一个标题为“请输入Microsoft Office Access数据库引擎OLE DB初始化信息”的窗口。它有信息,包括我想要访问的数据源的路径和名称,但如果我单击确定,它说,抱歉,这不起作用,你想要连接到(然后它列出确切的它刚刚说的相同路径和文件名不起作用)。它重复了我刚才提到的步骤,之后就出错了。
如果重要,这里是我用来从Access连接到Excel的(基本思想)代码:
Public Sub ExportToExcel()
Dim ObjXLApp As Object
Dim ObjXLBook As Object
Dim ExcelFilePath As String
ExcelFilePath = CurrentProject.Path & "\"
Set ObjXLApp = CreateObject("Excel.Application")
Set ObjXLBook = ObjXLApp.Workbooks.Open(ExcelFilePath & "filename.xlsm")
ObjXLApp.Visible = True
' Runs the "DataSetUp" macro in the Excel file.
ObjXLApp.Run ("DataSetUp")
' The DataSetUp macro saves the Excel file
' Quit Excel
ObjXLApp.Quit
' Free the memory
Set ObjXLBook = Nothing
Set ObjXLApp = Nothing
End Sub
我不知道如何解决这个问题!任何帮助将不胜感激。
答案 0 :(得分:2)
这可能会发生,因为您的访问数据库仍处于打开状态,新的Excel文件需要将数据输入该数据库。发生这种情况时,数据库无法打开,这就是excel错误的原因并要求连接到另一个位置。
所以,我可能会在访问内部通过vba生成所需的清理工具。