1

我有一个主要在 Access 中运行的自动化过程。但是,在中间,它将一些数据放入 Excel 中以将其整理成正确的形式(这比在 Access 中执行要快得多),最后它打开另一个 Excel 文件并将来自某些 Access 查询的数据放入 Excel 文件. 对于从 Excel 到 Access 的这些连接,我通过进入 Excel 并执行 Data --> Get External Data --> From 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

我不知道如何解决这个问题!任何帮助将非常感激。

4

1 回答 1

2

这可能是因为您的 access 数据库仍然打开,新的 excel 文件需要从中输入数据。发生这种情况时无法打开数据库,这是excel出错并要求连接到另一个位置的原因。

因此,我可能会努力通过 vba 内部访问生成所需的清理。

于 2012-08-29T16:12:15.663 回答