【发布时间】:2016-10-14 13:07:42
【问题描述】:
我目前正在创建一个简短的 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,但我对“acSpreadsheetTypeExcel12”参数使用“.xls”扩展名。任何帮助,将不胜感激。
谢谢
【问题讨论】: