源码如下:
' ================================================
' 过程名称:LoadAllMDBData
' 功能描述:批量加载指定文件夹中的Access数据库(.mdb)文件数据到Excel工作表
' 主要功能:
' 1. 自动遍历"原始数据"子文件夹下的.mdb文件(最多20个)
' 2. 从每个文件的results表中提取CellHalf,Class,Eta,Uoc,AOI_1_R字段
' 3. 将数据合并到"原始数据"工作表中
' 输入参数:无
' 返回值:无
' 调用示例:直接运行LoadAllMDBData过程
' 依赖条件:
' 1. 需要启用Microsoft ActiveX Data Objects引用
' 2. 需要安装ACE OLEDB 12.0数据库驱动
' 作者:xiangbing
' 创建日期:2025-04-23
' 修改记录:
' [日期] [修改人] [修改内容]
' ================================================
' 技术要点:
' 1. 使用ADODB.Connection连接Access数据库
' 2. 通过CopyFromRecordset方法实现高效数据导入
' 3. Dir函数实现文件遍历
' 4. 自动定位最后空行追加数据
' ================================================
Sub LoadAllMDBData()
' 声明变量
Dim ws As Worksheet ' 工作表对象
Dim folderPath As String ' 文件夹路径
Dim fileName As String ' 文件名
Dim fileCount As Integer ' 文件计数器
Dim conn As ADODB.Connection ' ADO数据库连接对象
Dim rs As ADODB.Recordset ' ADO记录集对象
Dim lastRow As Long ' 工作表最后一行
Dim i As Integer ' 循环计数器
' 设置对"原始数据"工作表的引用
Set ws = ThisWorkbook.Sheets("原始数据")
' 构建文件夹路径(当前工作簿所在路径下的"原始数据"子文件夹)
folderPath = ThisWorkbook.Path & "\原始数据\"
' 初始化文件计数器为0
fileCount = 0
' 创建新的ADO连接和记录集对象实例
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
' 获取文件夹中第一个.mdb文件
fileName = Dir(folderPath & "*.mdb")
' 循环处理文件夹中的.mdb文件
Do While fileName <> ""
' 如果已处理20个文件则退出循环
If fileCount >= 20 Then Exit Do
' 打开数据库连接(使用ACE OLEDB 12.0提供程序)
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & folderPath & fileName & ";"
' 执行SQL查询,从results表中获取指定字段
rs.Open "SELECT CellHalf,Class,Eta,Uoc,AOI_1_R FROM results", conn
' 找到工作表中A列最后一个非空单元格的下一行
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
' 将记录集中的数据复制到工作表中(从lastRow行开始)
ws.Cells(lastRow, 1).CopyFromRecordset rs
' 关闭记录集和数据库连接
rs.Close
conn.Close
' 文件计数器加1
fileCount = fileCount + 1
' 获取下一个.mdb文件名
fileName = Dir()
Loop
' 释放对象内存
Set rs = Nothing
Set conn = Nothing
' 显示完成消息框
MsgBox "已加载 " & fileCount & " 个文件的数据。", vbInformation
End Sub
代码功能说明:
-
该宏用于从指定文件夹中读取最多20个Access数据库(.mdb)文件
-
从每个数据库的results表中提取CellHalf,Class,Eta,Uoc,AOI_1_R字段
-
将所有数据合并到"原始数据"工作表中
-
最后显示已加载的文件数量
注意事项:
-
需要确保安装了Microsoft ACE OLEDB 12.0提供程序
-
文件夹路径必须存在且包含.mdb文件
-
每个数据库必须包含results表且有指定字段