Microsoft Access找不到表对象

我目前正在创build一个简短的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或创build不同的Excel文件或创build不同的源Access表来解决此错误。 这将工作1-2次运行,然后我得到的错误没有改变任何东西。

此外,如果通过“devise”模式input表“MonthsOutput”,VBA将返回该对象正被其他用户使用的错误。 因此,这使我相信它知道表存在,它不能使用它。

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

谢谢

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扩展名。