我目前正在创建一个简短的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"的扩展论点。任何帮助,将不胜感激。
由于
答案 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扩展名。