2017-06-01 18 views
0

おはよう、複数のシートを持つ.xlsxワークブックを結合するVBA

私はこの数日間、この問題を悩まされています。私は、複数のワークブックを結合するマクロを作成しようとしています。すべて同じシート名、同じヘッダー、データ入力のみが異なる(セルの式とセルの書式が含まれます)。

最終的な目標は、すべての同じワークシートが含まれているが、データが結合されているため、たとえばシートAはすべてのデータをすべてのシートAsから別々のワークブックにまとめ、シートB、C、Dなどがあります。

私が困惑し続ける部分は、すべてのシートを含むワークブックで終わるか、別々にするか、またはシートAMのすべてのデータを1つのシートとすべてのフォーマットにまとめたワークブックで終わることです除去される。私は実際にこれのための正しいコードを考え出す助けを使用することができます。

+0

これは一般的な問題である必要があります。これは、過去8時間以内にこのタイプの統合作業を行うことを求める2番目の質問です。 (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 
関連する問題