エクセル:複数ブックから任意のシートを選んで結合

このQ&Aのポイント
  • 複数ブックをまとめて結合する方法について教えてください。
  • 複数のブックを一つのブックにまとめる方法を知りたいです。
  • エクセルの複数ブックの先頭シートを結合する方法を教えてください。
回答を見る
  • ベストアンサー

エクセル:複数ブックから任意のシートを選んで結合

お世話になります。 複数のブックをひとつにまとめるという質問は過去にもたくさんあったのですが次の場合の対処がわかりませんでしたので教えてください。 なお手動でやるのではなく、マクロやフリーソフトなどで自動化したいと思っています。 1つのフォルダに複数のブックがあり、各ブックには複数のシートがあります。各ブックの先頭シート(一番左のシート)だけを1つのブックにまとめたいのです。 現在、各ブックの先頭シート(一番左のシート)の名前には「人の名前」が入っています。 1つにまとめるブックを 全員.xls として、このブックの各シートに各ブックの先頭シート(一番左のシート)の名前(人の名前)をつけて保存したいのです。 結合する際に「人の名前」のようにシート名が違うことが問題になるならば、すべてのブックのSheet1だけをまとめるというやり方でも構いません。 この場合、全員.xlsの各シート名は適当でも良い。 よろしくお願いします。

  • HGK
  • お礼率69% (138/199)

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

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

一番左のワークシートはシート名にかかわらず、Worksheets(1)で取得できるので、 全員.xlsの標準モジュールに以下のような感じで出来ると思います。 各ブックと全員.xlsは同じフォルダにあるものとします。 Sub test() Dim FSO As Object Dim fName As File Dim MyFolder As String Dim wBook As Workbook MyFolder = ThisWorkbook.Path Set FSO = CreateObject("Scripting.FileSystemObject") For Each fName In FSO.GetFolder(MyFolder).Files If FSO.GetExtensionName(fName) = "xls" And _ FSO.GetBaseName(fName) <> "全員" Then Set wBook = Workbooks.Open(fName) wBook.Worksheets(1).Copy _ after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) wBook.Close End If Next Set FSO = Nothing Set wBook = Nothing End Sub

HGK
質問者

補足

ご回答ありがとうございます。2行目のDim fName As File のところでユーザー定義型が定義されてません のエラーが出ました。この行を削除したら問題なく動きました。あと、デスクトップ上では問題なく動きますが、サーバー上では結合するブックを見つけられないというエラーがでます。もしよろしければアドバイスください。

その他の回答 (1)

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

>2行目のDim fName As File のところでユーザー定義型が定義されてません のエラーが出ました。 ごめんなさい。 当初はWindowsScriptHostObjectModelに参照設定して、 Dim FSO As New FileSystemObject としていたものですから・・・。アップする前に修正するのを忘れてしまいました。 Dim fName As Object に修正します。 >デスクトップ上では問題なく動きますが、サーバー上では結合するブックを見つけられないというエラーがでます。 結合する各ブックと、マクロブック(全員.xls)の位置関係はどうなっていますか? 同じフォルダにあれば、問題なく動くと思いますが・・・。

HGK
質問者

お礼

ありがとうございました。

関連するQ&A

  • Excel VBA 複数ブックのシート結合方法

    複数ブックの特定のシート(都度指定)のみを結合するマクロを組みたいです。 例えば、「ファイルマージ前」というフォルダがあって、その中には数値のみ違う同フォーマットのアンケート集計結果が保存されています。 このフォルダ内には50ほどのブックが保存されていて、そのブック内の「N表」というシート(50あるブック内全てに存在するシート)を新規ブック(マクロを組み込むブック)の1シートに上から順に値コピーしていきたいです。 今後、別の機会でファイルマージが必要になった際にも使用出来る様に、シート名を都度指定(セルにシート名を入力して、そのシート名を参照する等)出来るようにしたいのですが、自分の知識とネット等で調べた情報のみではうまく作成出来ませんでした。 詳しい方のお知恵をお借りしたいです。 宜しくお願い致します。

  • EXCELで複数のBookにマクロを使用して転記する方法

    Book1にSheetが5つ(Sheet名 あ、い、う、え、お)あります。 このSheetをマクロを使用して、それぞれ5つの別のBookにそのSheet名をつけて、 元と同じ名前のSheet名で保存する方法を教えて下さい。 コピー元  Book1   コピー先   Book名 あ  Sheet名 あ.xls Book名 い  Sheet名 い.xls Book名 う  Sheet名 う.xls Book名 え  Sheet名 え.xls Book名 お  Sheet名 お.xls

  • エクセルで各シート毎にブックに分割したい

    エクセルの1つのブックに複数の名前がついたシートがあり、その各シート毎にシート名のブックに分割したいのです。 シートが少なければ手作業で分割するのですが、100枚近くのシートがあるので、できればマクロで一括処理できれば助かるのですが。 過去ログで複数のブックのシートを一つのブックにまとめる事例がありましたので、その逆もできると思うのですが。 よろしくお願いします。

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

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

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

    マクロ初心者です。 フォーマットの同じ複数のブックのセルをコピーし、 新しいブックに羅列したいのですが、 ブック数が多く、手作業では効率が悪く、困っています。 例えば・・・Book001.xls、Book002.xls、二つのブックがあります BooK001.xls  ABCD 1  * 2  * 3  * 4  * Book002.xls  ABCD 1  + 2  + 3  + 4  + これを、新しいブック(All.xls)に  ABCD 1 *+ 2 *+ 3 *+ 4 *+ といったように、コピーしたいのですが、マクロ初心者のため、お手上げ状態です。 条件は、 ・フォルダにBookXXX.xls(XXXは001~の連続した番号)という名のブックが入っている ・BookXXX.xlsは全て同じフォーマット マクロの構文はもちろん、設定の仕方も教えていただけないでしょうか? よろしくお願いします。

  • 複数のブックのデータを1枚のシートにまとめるマクロ

    同じような質問は過去いくつかございますが、下記の条件を満たすことができず、 大変苦戦しております。 <条件> 1.フォルダ内すべてのエクセルで作成されたブックを、ブック名「全部」のsheet1に結合する。 2.結合するブックにはシートが複数あり、すべてのシートを結合するわけではなく、  シート名「社員」の、指定した範囲内「a10:t100」を結合する。 3.ブック名「全部」のsheet1のa列には結合元のブック名を表示する。 ご教授いただければ幸いでございます。 どうかよろしくお願いいたします。

  • 別のブックから、特定のシートを指定して他のブックを開くには

    マクロ初心者です。 A.xlsと、B.xlsという2つのブックがあります。 B.xlsはこの時、閉じた状態です。 Aには1つのシートのみがあって、Bには日毎に追加されていく不特定数のシートがあります。 Aのブックのシート内のセル番地A1に、「aaa」と入力した場合、B内の「aaa」という名前のシート名を指定してB.xlsを開くマクロはどう書いたら良いのでしょうか。 頼りきりの質問になってしまって申しわけございません。 何卒宜しくお願い申し上げます。

  • EXCELで同じフォームのシートを結合したいのですが・・

    お世話になります。 類似した質問を検索しましたが、解りませんでしたのでお願いします。 1つのブックに、同じフォームのデータがあるシートが複数あります。 こちらのシートを、結合(シート1の末行にシート2の先頭行・・の様に単純につなげる)方法を御教示ください。宜しくお願い致します。

  • VBA 複数シートをまとめて別ブックに移動させる

    Winは10、Excelは2016を使用しています。 複数シートをまとめて別ブック(新ブック)に移動させて、名前を付けて保存したいのですが、私の知識、理解が追い付かずに困っています。 シート名ではなく、シート番号で指定したいです。 移動させたいのは、左から3番目~27番目までのシートです。 Sub 移動 () Dim arr(2 To 26) As Integer Sheets(Arrar(arr)).Select Selection.Worksheets.Move '(保存場所選択と名前は手動でやります。) 'マクロが付いている移動元のブックは変更を保存せずに終了したいです。 おかしいところだらけですが、上記のおかしいところ、修正方法、追記文構文を教えて下さい。 よろしくお願い致します。

  • 複数ブックにあるシートを1つのブック束ねるマクロを汎用的に改良したい

    【質問編です。回答#1に、元コードを掲示いたいます】 以下は、1つの新規ブックに、特定フォルダにある不特定多数の ブックのSheet1を次々と束ねるマクロで、別の掲示板で教わりました。 よく使うので、大幅に汎用性をもたせたいのです。 (要望1) 束ねた際に、シート名をブック名にセットしたい。 (例:C:\temp\に、Book1.xls、Book2.xls、Book3.xls とあったら、  束ねられたシート名はBook1、Book2、Book3をシート名) (要望2)CSVやTXTを束ねる場合、8行目のxlsをcsvに書き換えなければ ならないので、ここは、その都度ダイアログで聞いて欲しい。 (規定値にxlsが入力されたInputBoxとか、XLS、CSVを選択させるラジオボタン等。) (要望3)7行目の代わりに↓のような「フォルダの参照」ダイアログを表示し、 毎回7行目を書き換えないで済むようにしたい。 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_120.html その他、このような仕様ならより汎用性が高いだろうと思われるもので 多機能化いただくのはとってもうれしいです。 どうぞ、よろしくお願い致します。

専門家に質問してみよう