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扩展名。
- 如何更改ACE TypeGuessRows Access 2007的registry值,以便在使用VBA从Excel文件导入时正确地确定字段数据types
- xlLastCell只能工作一半的时间
- 当不是所有的Excel文件都具有相同的工作表时,将多个Excel文件和工作表导入到Access
- 如何正确查询是否在Access中从Excel中选中checkbox
- 命令在保存后显示Excel
- 如何使用Microsoft XMLHTTP使用VBA获取文件扩展名
- 创buildExcelmacros以将具有特定标题的工作表过滤到新的工作簿
- 在Application.FileDialog中selectexcel文件后,检查是否存在特定的工作表
- 将数据添加到表格时移到下一列