Microsoft Access无法找到表对象

时间:2016-10-13 19:10:03

标签: excel vba ms-access access-vba

我目前正在创建一个简短的VBA脚本,该脚本从Access数据库中获取一个表,并通过" TransferSpreadSheet"将其导出到Excel。方法。但是,每当我这样做,我都会收到"运行时错误3011"表明" Microsoft Access数据库引擎无法找到对象" MonthsOutput"。

以下是相关的格式和代码部分:

Public Sub Run()

OutputFileName = CurrentProject.Path & "\Test5.xls"
TableName = "MonthsOutput"
Call SetExcel(OutputFileName, 1)
Call ExportToExcel(OutputFileName, TableName)
Call MoveData

End Sub

Public Function SetExcel(OutputFileName As String, SheetNumber As Integer)
Set XL = CreateObject("Excel.Application")
Set XLBook = GetObject(OutputFileName)
Set XLSheet = XLBook.Worksheets(SheetNumber)
Set XLSheet2 = XLBook.Worksheets(3)

End Function

Public Function ExportToExcel(OutputFileName As String, TableName As String)

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, TableName, OutputFileName


End Function

我偶尔可以通过重新启动Access,创建不同的Excel文件或创建不同的源Access表来解决此错误。这将适用于1-2次运行然后我得到错误而不改变任何东西。

此外,如果我输入表格" MonthsOutput"通过"设计"模式,VBA将返回该对象正被另一个用户使用的错误。因此,这使我相信它知道表存在,它只是不能使用它。

所有内容都存储在我的计算机本地,Excel文件和Access数据库位于相同的文件夹中。我正在运行Access 2013和Excel 2013,但我使用" .xls" " acSpreadsheetTypeExcel12"的扩展论点。任何帮助,将不胜感激。

由于

1 个答案:

答案 0 :(得分:1)

导出不需要Excel,请尝试以下操作:

Public Sub Run()

    OutputFileName = CurrentProject.Path & "\Test5.xls"
    TableName = "MonthsOutput"
    Call ExportToExcel(OutputFileName, TableName)

End Sub

Public Function ExportToExcel(OutputFileName As String, TableName As String)

    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, TableName, OutputFileName

End Function

另外,请使用xlsx扩展名。