我从多张表汇总运算后(运算后的表命名为dbb)在一个大的accdb里面,这个表有250万行,但是结果需要导出到excel里面。需求是导出1个文件,里面3个sheet,带标题一起导出,(不含标题)第1~1000000行在sheet1,第1000001~2000000行在sheet2,剩下的在sheet3。请问,是否可通过代码一次性完成?还有就是,为了提升效率,通过运算得到dbb表的过程只运算1次。
1条回答 默认 最新
CodeBytes 2023-02-23 21:32关注该回答引用ChatGPT
可以通过SQL语句和VBA代码结合实现需求。
首先,运算得到dbb表的过程只需要运算1次,可以将这个过程写成一个SQL查询或者存储过程,方便后续的调用。假设这个查询的名称为query1,那么可以在VBA中使用以下代码来执行查询:
Dim db As DAO.Database Set db = CurrentDb() db.Execute "query1"接下来,需要将dbb表的数据导出到Excel文件中的三个sheet中。可以使用VBA中的ADODB库来连接Access数据库和Excel文件,将dbb表中的数据查询出来,再分别写入到Excel文件的不同sheet中。具体代码如下:
'连接Access数据库和Excel文件 Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\access.accdb;Persist Security Info=False;" cn.Open '查询dbb表中的数据 Set rs = New ADODB.Recordset rs.Open "SELECT * FROM dbb", cn '导出数据到Excel文件 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet1 As Excel.Worksheet Dim xlSheet2 As Excel.Worksheet Dim xlSheet3 As Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet1 = xlBook.Worksheets(1) Set xlSheet2 = xlBook.Worksheets(2) Set xlSheet3 = xlBook.Worksheets(3) xlSheet1.Name = "Sheet1" xlSheet2.Name = "Sheet2" xlSheet3.Name = "Sheet3" Dim i As Long For i = 1 To rs.RecordCount '根据行号写入到不同的sheet中 If i <= 1000000 Then xlSheet1.Cells(i, 1).CopyFromRecordset rs ElseIf i <= 2000000 Then xlSheet2.Cells(i - 1000000, 1).CopyFromRecordset rs Else xlSheet3.Cells(i - 2000000, 1).CopyFromRecordset rs End If rs.MoveNext Next i '保存Excel文件 xlBook.SaveAs "C:\path\to\output.xlsx" xlBook.Close False xlApp.Quit本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报