同じフォーマット(1行目と2行目がタイトル行で、データは3行目から始まると仮定、ファイル名にDATAという文字列が含まれているものとする)のEXCEL シートをマージ(統合)するvbaコードを書いてみた。マージするファイルはマクロブックと同じフォルダにあるとものとする。使うのは、DIR関数とCopy,Pasteメソッドで、それをDo WhileでLoopさせる。とてもシンプルだ。このツールは自身のシート(”まとめ”)にマージした結果を抱え込む。menuシートでマクロ起動ボタンを作り、マクロ登録すれば、完成だ。
Option Explicit Dim maxRow As Long Dim filePath As string Dim fileName As String Dim i,j,k As Long Sub MergeALL() j = 1 ' the row counter of TO(COPY) filePath = ThisWorkbook.Path & "¥" fileName = Dir(filePath & "*DATA*.xlsx") ' Get a file to be merged Do While fileName <> "" ' Is there a file to be merged ? Workbooks.Open Filename :=filePath & fileName maxRow = ActiveWorkbook.Worksheets(1).Cells(Rows.Count,1).End(xlUp).Row If j = 1 then k = 1 ' k: the row counter of FROM(COPY) If j > 1 then k = 3 m = maxRow - ( k - 1 ) ' m: the numbers of lines to be copied ActiveWorkBook.Worksheets(1).Range(Rows(k),Rows(maxrow)).Copy ThisWorkBook.Worksheets("まとめ").Activate ThisWorkbook.Worksheets("まとめ").Range(Rows(j),Rows(j+m-1)).PasteSpecial (xlPasteAll) application.CutCopyMode = False j = j + m Workbooks(fileName).Close fileName = Dir() ' Get the next file to be merged Loop End Sub
こんな感じになると思う。
0 件のコメント:
コメントを投稿