将MS Access表拆分为多个部分,然后使用VBA导出到Excel

梅泽克

我有一个大约有50000条记录的Access表,我需要将其分成3部分,并使用VBA将这些部分导出到单独的excel文件或工作表中。

我需要这样做,因为这些Excel文件用在其他地方,其中文件中的最大记录数只能是大约20000条记录。

我玩过docmd.transferspreadsheet方法,但似乎无法拆分它们。

任何想法或帮助表示赞赏。

编辑:我正在使用的这张表包括以下几列:零件编号(由各种不同的字符组成),描述,价格,注释。它没有与记录相关的ID号,例如1到50000。

LocEngineer

试试这个:

Sub ExportChunks()
Dim rs As Recordset
Dim ssql As String
Dim maxnum As Long
Dim numChunks As Integer

Dim qdef As QueryDef

ssql = "SELECT COUNT(Id) FROM BigTable"
Set rs = CurrentDb.OpenRecordset(ssql)

maxnum = rs.Fields(0).Value  'total number of records

'add 0.5 so you always round up:
numChunks = Round((maxnum / 20000) + 0.5, 0)

On Error Resume Next 'don't break if Chunk_1 not yet in QueryDefs

ssql = "SELECT TOP 20000 * FROM BigTable"
CurrentDb.QueryDefs.Delete "Chunk"
Set qdef = New QueryDef
qdef.SQL = ssql
qdef.Name = "Chunk"
CurrentDb.QueryDefs.Append qdef
CurrentDb.QueryDefs.Refresh
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Chunk_1", "C:\00_Projekte_temp\Chunk_1.xlsx"

For i = 2 To numChunks
    ssql = "SELECT TOP 20000 * FROM BigTable WHERE ID NOT IN (SELECT TOP " & (i - 1) * 20000 & " ID FROM BigTable)"
    Set qdef = CurrentDb.QueryDefs("Chunk")
    qdef.SQL = ssql
    CurrentDb.QueryDefs.Refresh
    Set qdef = CurrentDb.QueryDefs("Chunk_" & i)
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, qdef.Name, "C:\00_Projekte_temp\" & qdef.Name & ".xlsx"
Next i

End Sub

它有什么作用?首先,它计算您需要多少块,然后创建查询,该记录将获取前20,000条记录,然后获取下一条,依此类推,最后将每个分块查询导出到Excel文件。

编辑:修改为onyl创建一个查询,该查询在每次迭代中都会被覆盖并导出到新的Excel文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MS Access,VBA-将交叉表导出到Excel

MS Access将联合查询导出到Excel,VBA问题

将我的 Access 表导出到 Excel,但将列中的不同值拆分为不同的工作表

如何使用Access VBA定义要从Excel导出到MS Access表的列数?

使用vba将MS Access查询输出到Excel

使用VBA将Excel工作表(的一部分)导出到CSV的范围

使用格式和布局将多个表从Access DB导出到Excel工作簿

VBA 将 excel 前身数据导出到 MS Project

如何将MS SQL表架构导出到Excel

将 matlab 数据导出到 MS Access

使用VBA将Excel表导出到SQL

如何使用VBA将合并表从Word导出到Excel

将MS Access指向VBA中的可变路径以导出到Excel

VBA 将 Access DB 导出到 Excel

如何使用例如pypyodbc将MS Access表导出到Python中的csv文件中

VBA-将Excel文件拆分为多个文件并将这些文件拆分为多个工作表

使用 VBA 将 VBA 模块从 Access 项目导出到 Excel 项目

将数据从Java导出到MS Excel的最佳方法

将Crystal Reports 2011导出到MS Excel 2010

如何通过首先查询MAx列并加1将Excel数据导出到MS Access?

Excel VBA-将动态范围转换为静态范围,然后作为新记录导出到Access 2010

使用样式将datagrid数据导出到MS Word

将多个结果导出到同一Excel工作表

使用R将多个数据框导出到一个Excel工作表

使用 Pandas 作为中间人将多个 html 表导出到 Excel

使用VBA根据Excel中的单元格值将数据拆分为多个工作簿

VBA 宏 - 将表格数据从 Excel 文件导出到 Word 并为每个工作表创建一个部分

在将DataGridView导出到MS Excel中使用System.Reflection.Missing.Value

使用Python根据数据将文件拆分为多个部分