ID非公開さん
2022/5/23 23:22
1回答
エクセルのVBAの記述について教えてください。 ワークシートが36つあるファイルがあります。 このファイルが複数個「集計用」フォルダにあります。
エクセルのVBAの記述について教えてください。 ワークシートが36つあるファイルがあります。 このファイルが複数個「集計用」フォルダにあります。 「集計用」フォルダ内の各ファイル、各ワークシート内の「ME9:NN26」の部分の値を「まとめファイル」に上から順に貼り付けて集計したいです。 例:「集計用」フォルダ内の一番目のファイルの一番目のワークシートの「ME9:NN26」をコピー ↓ 「まとめファイル」A1セルに値を貼り付け ↓ 「集計用」フォルダ内の一番目のファイルの二番目のワークシートの「ME9:NN26」をコピー ↓ 「まとめファイル」A19セルに値を貼り付け ↓ 「集計用」フォルダ内の一番目のファイルの三番目のワークシートの「ME9:NN26」をコピー ↓ 「まとめファイル」A37セルに値を貼り付け ↓ ・・・ ↓ 「集計用」フォルダ内の最後のファイルの最後のワークシートの「ME9:NN26」をコピー ↓ 「まとめファイル」A○○○セルに値を貼り付け このような感じでまとめたいです。 これらが出来るようなVBAの全記述をお願いします。
Visual Basic | Excel・74閲覧・100
ベストアンサー
こんな感じですかね。 まとめファイルに標準モジュールを追加して以下をコピーしてください。 Sub Matome() Dim i As Long, j As Long Dim tgtFolder As String, tgtName As String Dim tgtBook As Workbook, thisSht As Worksheet tgtFolder = "C:\○○○\△△△" '① tgtName = Dir(tgtFolder & "\*.xls*") Set thisSht = ThisWorkbook.Sheets("Sheet1") '② i = 1 Do Until tgtName = "" Set tgtBook = Workbooks.Open(tgtFolder & "\" & tgtName) With tgtBook Windows(.Name).Visible = False For j = 1 To .Sheets.Count With .Sheets(j) thisSht.Range(thisSht.Cells(i, 1), thisSht.Cells(i + 17, 36)) = _ .Range(.Cells(9, 343), .Cells(26, 378)).Value End With i = i + 18 Next .Close (False) End With tgtName = Dir() Loop End Sub ①については集計用フォルダーのパスに、②についてはまとめファイルの貼り付けたいシート名に変えてください。 また、①で設定したフォルダー内すべてのエクセルファイルを読みますので、まとめファイルはフォルダーの外に出してください。
質問者からのお礼コメント
回答ありがとうございます。 無事にまとめることができました。 本当に助かりました。
お礼日時:5/24 10:49