2017-06-01 94 views
0

晚上好,VBA將.xlsx工作簿與多張工作表結合使用

過去幾天我一直在爲此付出沉重的代價。我試圖創建一個宏來組合多個工作簿,所有工作簿都使用相同的工作表名稱,相同的標題,只有數據輸入不同(包括單元格和單元格格式中的公式)。

最終目標是讓最終工作簿包含所有相同的工作表,但是將數據組合在一起(例如工作表A)將從不同工作簿中的所有工作表中合併所有數據,並且與工作表相同B,C,D等。

我一直在困惑的部分是,或者我最終得到一張包含所有工作表但分開的工作簿,或者最終得到一張工作簿,該工作簿將來自表AM的所有數據合併到一張工作表中,並將所有格式已移除。我真的可以用一些幫助來找出正確的代碼。

+0

這一定是一個常見問題 - 這是第二個問題,要求我們在過去8小時內完成這種類型的整合工作。 (https://stackoverflow.com/q/44293488/6535336)至少聽起來你已經完成了一些任務,所以請將你的代碼包含到問題中,我們可能會幫助你使其工作。 – YowE3K

回答

0

希望這可以幫助。

Sub doCombine() 
    Dim worksheets() As Variant 
    Dim mergeObj As Object, dirObj As Object, filesObj As Object, excelObj As Object 
    Dim LastRow As Long 
    Application.ScreenUpdating = False 
    Set mergeObj = CreateObject("Scripting.FileSystemObject") 

    'Find workbooks from a folder 
    Set dirObj = mergeObj.Getfolder("C:\ExcelCombine") 
    Set filesObj = dirObj.Files 
    'Find workbooks from a folder end 

    For Each excelObj In filesObj 
     Set wb = Workbooks.Open(excelObj) 
     Dim worksheetName As String 
     worksheetName="WS" 
     Dim row As Integer 
     row=8 

     With wb.worksheets(worksheetName) 
      Do While Not IsEmpty(.Range("A" & row).Value) 
       .Range("A" & row & ":M" & row).Copy 
       ThisWorkbook.worksheets(worksheetName).Range("A" & row).EntireRow.Insert , CopyOrigin:=xlFormatFromRightOrBelow 
       ThisWorkbook.worksheets(worksheetName).Range("A" & row).End(xlUp).Offset(1, 0).PasteSpecial 
       row = row + 1 
      Loop 
     End With 
     Application.CutCopyMode=False 
    Next excelObj 
End Sub 
相關問題