前提・実現したいこと
条件
・集計用ファイル(以後、転記先)が存在する
・集計される複数のファイル(以後、転記元)は、特定のフォルダにまとめて格納されている
・転記元と転記先のファイル名は同一※ただし「yyyymm」のため月で変わる
・転記先にはマクロ起動前に、集計用シート作成済
・転記する列範囲は固定(A~I、M,N列)だが、行範囲が各ファイルによって変化する
・ものによっては該当シートがない場合もあるのでその時は無視して次のファイルの転記に移る
上記の条件でマクロを組みたいのですが
条件の下2つのコードに迷っています。
発生している問題・エラーメッセージ
以下のコードの場合、該当するシートがないファイルでマクロが止まってしまう。
シートに記載されている分の転記ができない。
該当のソースコード
Sub tenki()
Dim folder As String '//フォルダ
Dim file As String '//ファイル選択
Dim book As Workbook '//ブックオープン
Dim ws As Worksheet, flag As Boolean '//参照シート有無
Dim i As Integer
i = 2
With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then folder = .SelectedItems(1) End If End With '//フォルダを選択 file = Dir(folder & "*.xlsx") Do While file <> "" '//ファイルを開く Set book = Workbooks.Open(folder & "\" & file) '//集計したい月のシートがあるか確認 For Each ws In Worksheets If ws.Name = Format(Now, "yyyymm") Then flag = True Next ws If flag = True Then ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("A" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("A").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("B" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("B").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("C" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("C").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("D" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("D").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("E" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("E").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("F" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("F").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("G" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("G").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("H" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("H").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("I" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("I").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("M" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("M").Value ThisWorkbook.Worksheets(Format(Now, "yyyymm")).Range("N" & CStr(i)).Value = book.Worksheets(Format(Now, "yyyymm")).Range("N").Value file = Dir() i = i + 1 book.Close
Else
book.Close
End If Loop
End Sub
試したこと
上記のコードをベースにしております。
いじる箇所は大体見当がつくのですがどうすればよいのか分からず……
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。