複数のブックをまとめる方法

このQ&Aのポイント
  • Excel VBAを利用して複数のブックを一つのブックにまとめる方法について困っています。
  • 特定のフォルダ内のExcelファイルを検索して開くマクロを利用して、複数のブックを開くことはできましたが、開いたブックの特定のシートのデータのみをコピーして他のブックに貼り付ける方法が分かりません。
  • 特定のフォルダ内にある16個のExcelファイルを順番に開いて、その中のSheet2のデータをコピーして集計ブックに貼り付ける方法について教えてください。
回答を見る
  • ベストアンサー

複数のブックのデータを一つのブックにまとめたい

http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page1.htm ↑の 7. 指定したフォルダ内にあるExcelファイルを検索して開く の部分のマクロを利用して、集計.xlsというブックで、複数のブックを開くようにしましたが、そのブックを開いた時にそのブックのSheet2の中のデータのみコピーして、集計.xlsに貼り付けたいのですが、どのようにすればよいのか困っています。 指定したフォルダの中には、回答01.xls 回答02.xls ・・・と16個のブックがあります。順番に開いてコピーをするときに、どのようにブック名とシート名を指定すればよいのかわからず困っています。 何か参考になるものがあれば教えてください。 よろしくお願いします。

  • yuk777
  • お礼率86% (183/212)

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

元のサンプルを修正して、開いたブックの"Sheet2" A1 の値を、マクロのあるブックの一番左のシートのA列に順番に転記しています。 この場で書いたのでテストしておらず、上手く動くか解りません。 試すならテスト環境でどうぞ。 Sub BookOpen_7() Dim i As Long, wb as Workbook '←修正     ・     ・ ' ↓下記2行は不要なら ' でコメントアウト ' Rec = MsgBox(FName & "を開きますか", vbYesNo) ' If Rec = vbYes Then    ' ↓修正    Set Wb = Workbooks.Open FName    ' ↓追加    ThisWorkbook.Worksheets(1).Rnage("A65536").End(xlup).Offset(1,0).value = _        Wb.Worksheets("Sheet2").Rnage("A1").value    Wb.Close ' ↓不要なら ' でコメントアウト ' End if    ・    ・

yuk777
質問者

お礼

早速のご回答ありがとうございます。 自分でやってみて、ThisWorkbook.Worksheets・・・からがよくわからず、以前に教えて貰ったもので入れ替えてみたら、出来ました♪また何かありましたらよろしくお願いします。 Sub BookOpen_7() Dim i As Long, wb As Workbook Dim FName As String Dim k_i As Long Application.ScreenUpdating = False With Application.FileSearch .NewSearch .LookIn = ThisWorkbook.Path .SearchSubFolders = False .FileType = msoFileTypeExcelWorkbooks If .Execute > 0 Then For i = 1 To .FoundFiles.Count FName = .FoundFiles(i) Set wb = Workbooks.Open(FName) If i = 1 Then wb.Worksheets("Sheet1").Range("B3:AQ4").Copy _ Destination:=ThisWorkbook.Worksheets("Sheet1").Range("B3") End If For k_i = 5 To wb.Worksheets("Sheet1").Range("B65536").End(xlUp).Row addR_No = ThisWorkbook.Worksheets("Sheet1").Range("B65536").End(xlUp).Row + 1 wb.Worksheets("Sheet1").Range("B" & k_i & ":AQ" & k_i).Copy _ Destination:=ThisWorkbook.Worksheets("Sheet1").Range("B" & addR_No & ":AQ" & addR_No) Next wb.Close Next i Else MsgBox "対象ファイルはありませんでした" End If End With Application.ScreenUpdating = True End Sub

yuk777
質問者

補足

Set Wb = Workbooks.Open FName この記述の仕方がわからず悩んでいたので、大変感謝しています。

関連するQ&A

  • Excel VBA別ブックのシートをコピーするには

    Excel2010のVBAで別ブックのシートをコピーしてくる方法 Excelファイル(C:\test\BOOK2.xls)のシート名が TESTというシートを自分のExcelファイル(C:\doc\BOOK1.xls)に コピーするにはどのように記述すればよいのでしょうか。 ・コピー先:自分のExcelファイル(C:\doc\BOOK1.xls)  VBAのコードがあるファイルです ・コピー元:C:\test\BOOK2.xlsのTESTシート  なお、TESTシートを持つ同じ名前(BOOK2.xls)のファイルが  別フォルダにもあります   Workbooks( )の引数にファイル名(BOOK2.xls)は指定できるのですが、 フルパス名(C:\test\BOOK2.xls)で指定できないので困っています。

  • 複数のエクセルブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\データ解析\データ」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内のシート(シート名はファイル名と同じ)の「BO6からBW16までの□の範囲」で統一されています。 【抽出一覧作成イメージ】 ・「集計.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元BO6セルの値。以降,C列・D列と 順に値を入れていきたい。 ・BO6~BW16までのセル値を「集計.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • マクロで複数ブックのデータを一つのブックにコピー

    マクロ超初心者です。 1つのフォルダの中に複数のbook(sheetも複数)があります。 これを新しい1つのbookにまとめたいです。 sheetは「bookを開いた時に表示されるsheetだけ」を新しいbookにまとめたいです。 どなたかの回答に下記マクロがありました。 Sub consolid() Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く wb.Close '開いたブックを閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックをコピーしましました。" End Sub このマクロを使わせていただき、 これでいける!と思ったのですが、255文字以上のコピーが出来ません。 どのようにすればよいでしょうか?

  • VBA どのように記述すれば良いか教えてください。

    はじめて、質問させていただきます。 まだExcel VBAの勉強を始めたばかりの者です。 下記のようなツールを作ることになったのですが、非常に困っています。どなたかわかる方がみえましたら、どうか教えて下さい。(Excel2003を利用) <すべてAという同じフォルダ内> book1.xls book2.xls ・  ・ book*.xls →ファイル数は変動します。集計.xls以外のファイルはすべて同じシート名で構成されて         います。すべてのファイルのシート名 ”結果”が対象です。 集計.xls →このファイルにマクロを作りたいです。        シート名が1、2、3・・と116まで用意されています。 __________________________________________________________________________________________________________________________________ Aフォルダ内の複数ファイルの同じシート名(”結果”)というシートのみコピーをし、同じフォルダ内のファイル「集計.xls」のシートへ値貼り付けをしたいのですが、 一番初めにコピーしたシートを「集計.xls」の1という名のシートへ値貼り付け、2番目にコピーしたシートは「集計.xls」の2という名のシートへ値貼り付け。。3番目にコピーしたシートは「集計.xls」の3という名のシートへ値貼り付け。。というのを、シート数分繰り返す。。という記述を教えて頂きたいのです。 ループ??ですが、【一番初めにコピーしたシートを「集計.xls」の1という名のシートへ値貼り付け】 次に【2番目にコピーしたシートは「集計.xls」の2という名のシートへ値貼り付け】というのを一連の流れにしてループ処理したいのです。 こんなこと出来るのでしょうか??  初心者とはいえ丸投げは駄目だと、1週間ほどネットやいろいろなテキストで自分で何とかできないかと頑張ってみたのですが、部分部分しか記述できず時間だけが過ぎていき。。すっかり行き詰ってきてしまいました。 どうかお力を貸してください。宜しくお願い致しますm(uu)m

  • エクセルVBAで複数のブックから指定のシートを別のブックに複写するには

    エクセルVBAの超初心者です。 複数のフォルダに「●●社計算書(2010年3月).xls」・・・()内の年月は毎月増えます。格納されているフォルダは各会社名です。 というブックがあります。その各ブック内の売上というシートにある商品コードと売上金額を別の集計用ブックで集計したいと思っています。 どのように集計用ブックにコードを書いたらよいのでしょうか? 1 商品コードは各社共通です。 2 ブック名は共通ですがブック内のフォーマットは共通していません。(シート名は共通) 3 集計するのは集計時の年月度のデータです。 要領を得ず、ぶしつけな質問かと思いますが、大変困っています。 どなたかお分かりになる方、ご教授願います。 

  • EXCEL VBA 複数ブックの数字を集計したい

    お世話になります。 複数あるEXCELブックの集計をVBAで実施したく、下記質問させていただきます。 デスクトップに「東京支店」というフォルダがあります。 その中には下記の様な"年月+支店名+(担当者名)"というファイル人数分格納されています。 1310東京支店(田中).xls 1310東京支店(山田).xls 1310東京支店(鈴木).xls 1310東京支店(佐藤).xls 各ブックの中は添付の様なフォーマットになっています。 添付の様なフォーマットのシートが担当企業分だけ(A商店~D商店)あり、企業数は担当者によってバラバラです。 目的は各商品の1ヶ月の売上数量を4週に分けて追っていきたいのです。 各商品の売上数量は"合計"で表示され、内訳として"通常"と"特価"に分けられています。 ここまでは各担当者が手入力します。 ここから先が今回VBAでやりたいこととなります。 上記4つの担当者毎の数字を"1310東京支店(集計)"という集計用のブックに集計してフォーマットは添付の担当者毎のブックと同じです。 集計ブックでは担当者も企業も関係なく、とにかく1シートで東京支店の商品別の"売上数量"とその内訳(通常"と"特価")の合算された数字が一目で確認できるようにしたいのです。 例えば、集計ブックの[東京支店集計]というシートに「集計」というボタンを作成して、それを押したら「東京支店」フォルダ配下の担当者毎のブックの数字を全て拾ってきて 最終的には[東京支店集計]という1シートに添付画像のフォーマットで集計したいのです。 分かりづらい説明で大変恐縮ですがどなたかお知恵をお借りできませんでしょうか? よろしくお願い致します。 環境 WindowsXP SP3 Excel2003

  • Excel マクロで複数ブックのデータを一つのブックにまとめる方法

    マクロ初心者です。 1つのフォルダの中に複数のbook(sheetも複数)があります。 これを新しい1つのbookにまとめたいです。 sheetは「bookを開いた時に表示されるsheetだけ」を新しいbookにまとめたいです。 どなたかの回答に下記マクロがありました。 Sub consolid() Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く wb.Close '開いたブックを閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックをコピーしましました。" End Sub 非常によかったのですが、これですと (1)全てのsheetがコピーされてしまいます。 (2)また、保存しますか?とbookごとに聞いてきます。 上記のマクロのどこを変更すれば、(1)(2)を解決できますでしょうか? (エクセルは2002です) 以上、よろしくお願いします。

  • 複数のExcelを1つのExcelに

    Excel.xlsの1シート目に、フィールドとデータが入っています。このExcelが担当者ごと複数存在します。 複数のExcelを1フォルダにまとめ、1行目はフィールド・あとは全てデータとして、1つのExcelブックの1シートへまとめることは可能でしょうか? フィールドは38列、行数はブックごと異なり、ブック名も担当者ごと異なります。 いろいろ調べたのですが、VBA初心者の為、VBAを貼り付けて実行してもうまくいきませんでした。 できれば、元ファイルは消さないよう、コピーのみ行いたいと思っています。 フォルダ名は C:\出庫依頼書 です。 どなたかご教授いただけませんでしょうか。

  • EXCEL 時刻起動で複数ブックを1つにまとめる

    お世話になります。 私のデスクトップの[テスト]というフォルダに[東京支店集計.xls]というブックがあります。 [テスト]フォルダの中にさらに[個人別]というフォルダがあり、この中に下記の3つのファイルが置いてあります。 東京支店_田中.xls 東京支店_鈴木.xls 東京支店_山本.xls [やりたいこと] 毎日15:00になったら自動で上記3つのファイルを[東京支店集計.xls]に全データコピー貼り付けして[東京支店集計.xls]にデータを集約したいのです。 [東京支店集計.xls]には毎回全データ上書きしたいのです。 このとき個別の"東京支店_田中.xls"ブックなどは担当者によってフィルターなどがかけられている可能性があるため、集約時にはフィルターを取り除いた形で全データを貼り付けしたいです。 [個人別]フォルダ配下のファイルを集約する時、3つにのファイル名を指定するやり方でもいいですが、ファイルの数が増える場合もありますため、できれば[個人別]フォルダ配下のファイル全てコピー貼り付けする、という動作だと助かります。 私が考えているのは[東京支店集計.xls]にVBAで上記のファイルを集約するコードを作成して、15:00に起動して動かす、という流れなのかと思っております。 初心者のためVBAコードと時刻自動のセットの方法をご教授いただけすと大変助かります。 ★東京支店集計.xlsのファイルパス C:\Users\ユーザー名\Desktop\テスト\東京支店集計.xls ★個人別ファイルのファイルパス C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_田中.xls C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_鈴木.xls C:\Users\ユーザー名\Desktop\テスト\個人別\東京支店_山本.xls お手数をおかけしますが、どなたかお知恵をお借りできますでしょうか。 よろしくお願い致します。 環境 Excel2013 Windows7

  • Excel マクロで複数ブックのデータを一つのブックにまとめる方法

    マクロ初心者です。 1つのフォルダの中に複数のbook(sheetも複数)があります。 これを新しい1つのbookにまとめたいです。 回答に下記マクロがありました。 Sub consolid() Application.ScreenUpdating = False '画面更新を一時停止 Set mb = ThisWorkbook 'このコピー先ブックをmbとする。 myfdr = ThisWorkbook.Path fname = Dir(myfdr & "\*.xls") 'フォルダ内のExcelブックを検索 Do Until fname = Empty '全て検索 If fname <> mb.Name Then 'ブック名がこのブックの名前でなければ Set wb = Workbooks.Open(myfdr & "\" & fname) 'そのブックを開きwbとする。 wb.Worksheets.Copy After:=mb.Sheets(mb.Sheets.Count) 'コピーしてコピー先ブックの末尾に置く wb.Close '開いたブックを閉じる n = n + 1 'ブック数をカウント End If fname = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新一時停止を解除 MsgBox n & "件のブックをコピーしましました。" End Sub これで使用した所マクロを実行する度に何度も同じシートが コピーされてしまいます。 できれば同じ名前のシートは上書きにしてマクロを何度も使用できるように【各BOOKは毎週更新されて私のフォルダに入ってきます】したいのですが そのような事は可能なのでしょうか? どなたか分かる方教えてください。お願い致します。

専門家に質問してみよう