Ms access 导入多个Excel文件

Ms access 导入多个Excel文件,ms-access,vba,Ms Access,Vba,我创建了以下文件,将47个excel文件导入Access;都具有相同的命名约定REPORT01、REPORT02等 但是,我现在有一个文件列表,其中有不同的名称。有人能建议我如何调整它以适应变化吗?我想我可以用excel文件名创建一个单独的模块,因为主代码只是在循环遍历文件夹时引用。如果找到匹配项,则导入 Sub ImportTables() ' Define base path Const cstrFolder As String = "F:\TCB_HR_KPI\Data View\" D

我创建了以下文件,将47个excel文件导入Access;都具有相同的命名约定REPORT01、REPORT02等

但是,我现在有一个文件列表,其中有不同的名称。有人能建议我如何调整它以适应变化吗?我想我可以用excel文件名创建一个单独的模块,因为主代码只是在循环遍历文件夹时引用。如果找到匹配项,则导入

Sub ImportTables()
' Define base path
Const cstrFolder As String = "F:\TCB_HR_KPI\Data View\"

Dim strExt As String
Dim strFile As String
Dim strTable As String
Dim i As Long
Dim fileCount As Long

' Check all 47 files exist
For i = 1 To 47
    strFile = cstrFolder & "REPORT" & Right("0" & i, 2) & ".xls"
    If Dir(strFile) <> "" Then fileCount = fileCount + 1
Next i

' Partial results allowed, only exit when no matches found
If fileCount = 0 Then
    MsgBox "Files not found"
    Exit Sub
End If

' Second loop to import data
fileCount = 0
For i = 1 To 47
    strFile = cstrFolder & "REPORT" & Right("0" & i, 2) & ".xls"
    If Dir(strFile) <> "" Then
        Debug.Print "Found: " & strFile
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "REPORT" & Right("0" & i, 2), strFile, True
        fileCount = fileCount + 1
    End If
Next i

MsgBox fileCount & " files imported."
End Sub
Sub importables()
'定义基本路径
Const cstrFolder As String=“F:\TCB\u HR\u KPI\Data View”
像弦一样的暗线
作为字符串的Dim strFile
作为字符串的Dim strTable
我想我会坚持多久
将文件计数设置为“长”
'检查所有47个文件是否存在
对于i=1到47
strFile=cstrFolder和“REPORT”以及Right(“0”和i,2)和“.xls”
如果Dir(strFile)“,则fileCount=fileCount+1
接下来我
'允许部分结果,仅在未找到匹配项时退出
如果fileCount=0,则
MsgBox“未找到文件”
出口接头
如果结束
'导入数据的第二个循环
fileCount=0
对于i=1到47
strFile=cstrFolder和“REPORT”以及Right(“0”和i,2)和“.xls”
如果目录(strFile)“,则
调试.打印“找到:”&strFile
DoCmd.transfer电子表格导入,acSpreadsheetTypeExcel9,“报告”和右侧(“0”和i,2),strFile,True
fileCount=fileCount+1
如果结束
接下来我
MsgBox fileCount&“已导入文件。”
端接头

硬编码总是一场等待发生的灾难。我建议将此表作为基础。用报表名称填充一个表(也就是说,假设您确切知道它们是什么),然后打开该表的记录集。然后,您可以在表中循环并使用该文件名调用导入函数

你可以放一个

On Error Resume
语句,这样,如果文件名不存在,它将直接移动到下一个文件名。或者你可以做一些更复杂的事情,搜索实际的文件夹。我没有时间修改它,但我使用的代码如下所示:

Dim fsoSysObj      As Scripting.FileSystemObject
Dim z
Dim fdrFolder      As Scripting.Folder
Dim fdrSubFolder   As Scripting.Folder
Dim filFile        As Scripting.File
'Dim strSQL As String

' Return new FileSystemObject.
Set fsoSysObj = New Scripting.FileSystemObject

' Get folder.
Set fdrFolder = fsoSysObj.GetFolder(strPath)

' Loop through Files collection
For Each filFile In fdrFolder.Files
您只需在filename表中对filFile.Name执行dLookup,以查看它是否存在