Access 批量导入Excel

目标:

把文件夹下相同的数据表批量导入合并到 Access 一张表下面

Excel 文件集
  • 一.新建一个 Access 文件
新建Access
  • 二.菜单选择"数据库工具",打开VB编辑器
打开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是一张表里面有,但另一张表没有的字段)

错误信息

你可能感兴趣的:(Access 批量导入Excel)