使用多个工作表将相同的Excel文件导入访问

时间:2016-10-04 14:10:29

标签: excel vba ms-access

所以,我正试图找到方法来帮助使用访问权限在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")

1 个答案:

答案 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