[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックの特定シートを合体』(ran)
同じ構成の複数(5つ程度)ブックの中の、同一名の特定のシートをマクロを使って合体したいのです。
集計用ブックのsheet1に、ブックaのsheet1をコピー、最終行の次の行から下にブックbのsheet1をコピー…といった具合に。
ただし、合体するシートのデータ行数はまちまちで、日々、更新されます。それぞれ各ブック内の別のシート(これは各ブック共通)を参照しています。
よろしくお願いします。
こんなの?
Sub sample() Dim myPath As String Dim wb_A As Workbook, wb_B As Workbook Dim i As Long, s As Long
myPath = Application.GetOpenFilename(("Excel ファイル (*.xls), *.xls"), , "データを蓄積するブックを選択して下さい。") If myPath = "False" Then Exit Sub Set wb_A = Workbooks.Open(myPath)
myPath = Application.GetOpenFilename(("Excel ファイル (*.xls), *.xls"), , "データを取得するブックを選択して下さい。") If myPath = "False" Then Exit Sub Set wb_B = Workbooks.Open(myPath)
With wb_B
For i = 1 To .Worksheets.Count 'wb_Bループ
For s = 1 To wb_A.Worksheets.Count 'wb_Aループ '同じ名前のシートがあるとき データコピー If .Worksheets(i).Name = wb_A.Worksheets(s).Name Then .Worksheets(i).Range("A1").CurrentRegion.Copy _ wb_A.Worksheets(i).Range("A65536").End(xlUp).Offset(1) Exit For End If
'同じ名前のシートが無いとき シートコピー If s = wb_A.Worksheets.Count Then .Worksheets(i).Copy Before:=wb_A.Sheets(1) End If Next s
Next i
wb_B.Close False MsgBox "完了" End With End Sub
(INA)
(*)部分に、ファイル名を入れればよいのですか?
ブックc、dについては
myPath = Application.GetOpenFilename(("Excel ファイル (*.xls), *.xls"), , "データを取得するブックを選択して下さい。") If myPath = "False" Then Exit Sub Set wb_B = Workbooks.Open(myPath)
この部分をコピーするだけでよいですか?
(ran)
実行してみたの?
(INA)
>マクロの実行結果が、空白シートになってしまいました。 どのようなブックに使用したのか分かりませんが、 コードを理解して適当に変更して下さい。あくまで参考ということで。
(INA)
はい、参考にさせていただきます。 ほとんどド素人で、特にループ処理について分からないので、勉強します。 ちなみに、 Range("A65536").End(xlUp).Offset(1) なんて、目からウロコでした。
(ran)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.