我从多张表汇总运算后(运算后的表命名为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
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 对于这个问题的解释说明
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥15 树莓派5怎么用camera module 3啊
- ¥20 java在应用程序里获取不到扬声器设备