[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数ブックの特定シートを合体』(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.