[[20040915105039]] 『複数ブックの特定シートを合体』(ran) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数ブックの特定シートを合体』(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)


見当違いな質問ですみません。
実行してみました。
取得するブックの選択がひとつしかできず、マクロの実行結果が、空白シートになってしまいました。
(ran)


 >マクロの実行結果が、空白シートになってしまいました。
 どのようなブックに使用したのか分かりませんが、
 コードを理解して適当に変更して下さい。あくまで参考ということで。

  (INA)


 はい、参考にさせていただきます。
 ほとんどド素人で、特にループ処理について分からないので、勉強します。
 ちなみに、
 Range("A65536").End(xlUp).Offset(1)
 なんて、目からウロコでした。

 (ran)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.