我有一个宏(使用宏向导创建),它运行多个查询,然后输出一个Excel表。该表格具有超过65,000个记录限制,用于导出格式化表格。如何导出表格而无需在宏中格式化?这是我运行宏后收到的错误。用于导出到Excel的MS Access宏访问限制为65k条记录
2
A
回答
0
我知道你正在使用VBA访问导出的记录,但你有没有想过使用数据链路从Excel您的查询,使用访问VBA打开Excel文件并刷新数据表?这肯定会消除最大行数的问题,并且不应该由于导出大小而导致任何故障问题。如果您需要更多关于如何做的信息,请告诉我,我会在此处添加更多信息。
0
这是上面的Anthony Griggs要求的代码。但它是一个VBA解决方案,而不是一个宏观解决方案,因此不能直接响应所发布的问题。这就是我为解决这个问题而努力的方式,并且长期以来在生产中取得了成功。
在使用此代码之前,一定要添加对“Microsoft ActiveX Data Objects 2.8 Library”(或当前版本)以及“Microsoft Excel 12.0 Object Library”(或当前版本)的引用。保存更改并在最后退出至关重要,否则它会让Excel在后台打开,您必须通过任务管理器来终止。
Dim rs As New ADODB.Recordset
Dim xl As New Excel.Application
Dim xlWb As Excel.Workbook
Dim xlRange As Excel.Range
xl.Visible = False
xl.ScreenUpdating = False
vcurfilename = "MyFilename.XLSX”
Set xlWb = xl.Workbooks.Open(vcurfilename, 0, False, 5, "password", "password")
rs.Open "Select * from qryMyAccessQuery", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
Set xlRange = xlWb.Worksheets("MyExcelSheetName").Range("A1").Offset(1, 0)
xlWb.Sheets("MyExcelSheetName ").Range("a2:bq25000").ClearContents
xlRange.Cells.CopyFromRecordset rs
xl.Range("Table1").Sort key1:=xl.Range("Table1[[#All],[MyColumnName]]"), _
order1:=xlAscending, Header:=xlYes
On Error Resume Next
xl.Range("table1").Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
rs.Close
xl.Range("table1").ListObject.HeaderRowRange.Find("MyColumnName1").EntireColumn.NumberFormat = "dd-MMM-yy"
xl.Range("table1").ListObject.HeaderRowRange.Find("MyColumnName2").EntireColumn.NumberFormat = "dd-MMM-yy"
xl.Range("table1").ListObject.HeaderRowRange.Find("MyColumnName3").EntireColumn.NumberFormat = "dd-MMM-yy"
xlWb.Close SaveChanges:=True
xl.Quit
DoEvents
相关问题
- 1. 导出值到Excel MS访问
- 2. MS Access导出为Excel格式
- 3. 将MS Access图表导出到Word/Excel
- 4. 访问到MS Access用C#
- 5. 限制访问MS Access数据库到特定的服务器?
- 6. MS访问限制
- 7. 访问宏来复制记录内容
- 8. MS Access查询返回的记录不足,但仅限于某些限制
- 9. MS Access中的表访问权限限制
- 10. 导出为Excel限制
- 11. 将Crystal Reports 2011导出到MS Excel 2010
- 12. 从CSV导入更新现有访问记录,原生到MS Access或VB.NET中
- 13. MS Access导出为.xls
- 14. 从Excel工作表导出值到访问记录
- 15. 使用SQL访问限制记录
- 16. MS Access中使用的基于角色的访问控制
- 17. 使用Excel VBA将数据导出到MS Access表
- 18. 对于ms访问查询中特定条件为false的记录
- 19. Excel宏 - 导出为PDF
- 20. 从Access导出到Excel
- 21. 限制访问,并在Microsoft Access亮页
- 22. 两条记录添加到表的MS Access
- 23. 错误插入一条记录到的MS Access
- 24. Excel宏录制
- 25. 使用Python将MS Access中的数据复制到MS Excel中
- 26. 的MS Access,VBA - 导出交叉表到Excel
- 27. SQL Server导出到代码中的Excel和MS Access
- 28. 的MS Access导出查询到Excel文件模板
- 29. 使用宏记录器记录长Excel公式的问题
- 30. 通过宏插入MS Access中的记录
请尝试使用'DoCmd.TransferSpreadsheet'。 – PaulFrancis
工作,但似乎偶尔崩溃的数据库。这似乎是不可靠的? –
你要导出什么类型的Excel文件? .xls只能有65,535行。也许.xslx可以做到这一点,因为它可以容纳更多的行(如果你还没有做到这一点)。甚至可以尝试使用.xlsb来提高性能,因为它可以减小文件大小并且速度更快。 – Makki