Access 批量导入Excel
分类:VBA
目标:
把文件夹下相同的数据表批量导入合并到 Access 一张表下面
- 一.新建一个 Access 文件
- 二.菜单选择"数据库工具",打开VB编辑器
- 三.粘贴代码,进行运行
例:
Option Compare Database
Sub main()
Set fso = CreateObject("Scripting.FileSystemObject")
Dim FileFolder As String
Dim keyStr As String
FileFolder = "C:\Users\Administrator\Desktop\测试"
keyStr = "zco005"
Set getfso = fso.GetFolder(FileFolder).files
For Each Item In getfso
If InStr(Item, keyStr) <> 0 Then
DoCmd.TransferSpreadsheet acImport, 10, keyStr, Item, True, "sheet1!"
End If
Next
MsgBox "完成"
End Sub
说明:
Option Compare Database
'这一句是打开vb编辑器自带的
Sub main()
Set fso = CreateObject("Scripting.FileSystemObject")
Dim FileFolder As String
Dim keyStr As String
FileFolder = "C:\Users\Administrator\Desktop\测试"
'这个是要合并的 excel 文件集合所在的文件夹
keyStr = "zco005"
'这个是 excel 文件名所包含的关键字,用于挑选需要导入的相同 EXcel 数据
Set getfso = fso.GetFolder(FileFolder).files
For Each Item In getfso
If InStr(Item, keyStr) <> 0 Then
DoCmd.TransferSpreadsheet acImport, 10, keyStr, Item, True, "sheet1!"
'keyStr 是生成的access的表名称;
'item 是要导入的文件路径;
'sheet1!是指要导入数据的范围;可以指定区域例 sheet1!A1:G14
'True 可以在导入或链接时将电子表格的第一行用作字段名称。
'需要了解详细说明,请前往查看官方说明文档
End If
Next
MsgBox "完成"
End Sub
如果文件夹下数据本来就是一致的,那么代码可以精简,去掉关键词判断
例
Option Compare Database
Sub main()
Set fso = CreateObject("Scripting.FileSystemObject")
Dim FileFolder As String
Dim keyStr As String
FileFolder = "C:\Users\Administrator\Desktop\测试"
keyStr = "zco005"
Set getfso = fso.GetFolder(FileFolder).files
For Each Item In getfso
DoCmd.TransferSpreadsheet acImport, 10, keyStr, Item, True, "sheet1!"
Next
MsgBox "完成"
End Sub
DoCmd.TransferSpreadsheet 官方说明文档
https://docs.microsoft.com/zh-cn/office/vba/api/access.docmd.transferspreadsheet
- 四.注意事项
批量导入如果使用标题模式,即第一行作为标题,请保持批量导入的标题一致
不然会报错 提示"xxx"字段不存在(xxx是一张表里面有,但另一张表没有的字段)
作者:云兮为简
链接:https://www.jianshu.com/p/8fa32cc857fb
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。