所以,我正试图找到方法来帮助使用访问权限在Excel工作表中重新组合数据。我想要做的是获取多个格式相同的excel文件,并将它们连接成一个连续的表。现在我有一个VBA功能,允许我在excel文件目录中定位一个excel工作表,并将它们组合成一个访问表。我的问题是,我怎样才能做同样的事情,但是一次性在目录中的每个工作表,而不是运行和修改每个工作表的代码。
TL; DR您有100个excel文件,每个文件包含7个工作表。格式相同,但数据不同。如何将所有100个文件合并到7个相应的MS Access表中?
******问题已经解决了。工作代码如下*******
模块1名为SingleModule:
/usr/local/php-5.5.36-cgi/bin
模块2名为MultipleModule:
Option Compare Database
Public Function importExcelSheets(Directory As String, TableName As String, WkShtName As String) As Long
On Error Resume Next
Dim strDir As String
Dim strFile As String
Dim I As Long
I = 0
If Left(Directory, 1) <> "\" Then
strDir = Directory & "\"
Else
strDir = Directory
End If
strFile = Dir(strDir & "*.XLSX")
While strFile <> ""
I = I + 1
strFile = strDir & strFile
Debug.Print "importing " & strFile
DoCmd.TransferSpreadsheet acImport, , TableName, strFile, True, WkShtName
strFile = Dir()
Wend
importExcelSheets = I
End Function
在立即窗口中使用以下命令执行(确保更改文件路径):
Public Function importMultipleExcelFiles(Directory As String) As Long
For x = 1 To 7
Dim TableName As String
Dim WkShtName As String
TableName = Choose(x, "Table1", "Table2", "Table3", "Table4")
WkShtName = Choose(x, "Table1!", "Table2!", "Table3!", "Table4!")
Call SingleModule.importExcelSheets(Directory, TableName, WkShtName)
Next x
End Function
侧面注意:
您可以使用立即窗口中的SingleModule上的以下命令来定位一个工作表:
? importMultipleExcelFiles("C:\Excel File Directory")
答案 0 :(得分:1)
抱歉,我没有看到您的TableName如何进入该过程。当您调用importExcelSheets函数时,请使用带有CHOOSE功能的FOR-NEXT。
for x= 1 to 7
TableName = choose(x, "Table1", "Table2"...)
WkShtName = choose(x, "ContactDetails!", ...)
importExcelSheets Dir, TableName, WkshtName
next x