VBAによるワークブックの統合と目次の作成

このQ&Aのポイント
  • VBAを使用して、複数のワークブック内のシート名を一覧表として出力し、それらのシートをメインのワークブックにコピーする方法を教えてください。
  • Windows XPとExcel2010を使用しています。メインのワークブックと同一フォルダ内にある特定のサブフォルダに格納されている複数のワークブックからシート名を取得し、目次として表示したいです。
  • 目次の一覧表は、メインのワークブックの特定のシートに表示されます。また、コピーしたシートは目次に対応したページとして使用されます。
回答を見る
  • ベストアンサー

VBAによるワークブックの統合と目次の作成

メインのワークブックと同一フォルダ内に設けられたサブフォルダに格納されている複数のワークブック内のシート名をメインの特定シートに一覧表として出力し、且つそれらのシートをメインのワークブックのシート末尾にコピーするExcelマクロ(VBA)を教えて下さい。 【条件】 ・OSはWindows XP、Excel2010 ・対象フォルダ : \\share\mws\mws-01 ←ネットワークフォルダです ・メインワークブック名 : mws-01  メインワークブックはマクロ実行前は3シートで構成されています。 ・サブフォルダ名 : single  サブフォルダ内に格納されているワークブックは全て1シートです。 【イメージ】 上記の特定シートに出力する一覧表は目次。 メインワークブックにコピーしたシートは目次に対応したページというイメージです。 一覧表は3シート目のB6セルからB7、B8...というように表示をしたいです。 複数のワークブックから特定の値を抽出するなどの例は過去の回答で拝見させていただき、なんとかそれを応用してみようと試みたのですが、自分のスキルでは無理でした。 誠に勝手ではありますが、分かる方がおりましたらご助力の程、お願い致します。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

メインワークブックが開いた状態から作業します(=メインワークブックにマクロを登録して実行します) sub macro1()  dim myPath as string  dim myFile as string  mypath = "\\share\mws\mws-01\sigle\"  myfile = dir(mypath & "*.xls*")  thisworkbook.worksheets(3).range("B5") = "INDEX"  do until myfile = ""   workbooks.open mypath & myfile   workbooks(myfile).worksheets(1).move after:=thisworkbook.worksheets(thisworkbook.worksheets.count)   thisworkbook.worksheets(3).range("B65536").end(xlup).offset(1) = thisworkbook.worksheets(thisworkbook.worksheets.count).name   myfile = dir()  loop end sub

uedastar
質問者

お礼

お礼が遅くなり申し訳ありません。 無事、作成できました。 この形式は色々と応用がききそうですね。 これを参考に自分ももっと勉強してみようと思います。 ありがとうございました!

関連するQ&A

  • Excel VBAで他のワークブックからのコピぺの仕方について

    Excel VBAで開いている全てのワークブックから決められたセルの中身とそのシート名をそれぞれ決められた一つのワークブックにコピぺする マクロを作りたいのですが、どうやって作って良いのかが分かりません。 例えば、 Sub Mac() For i = 1 To 100 Workbooks("Book1.xls").Worksheets("sheet1").Range(Cells(2108, 2), Cells(3108, 2)).Cut Destination:=Workbooks("Book1.xls").Worksheets("sheet1").Cells(13, 2) End Sub みたいにすれば良いと思うのですが、開いている全てのファイルからのコピぺってどうやって記述するのでしょうか? 何卒よろしくお願い致します。

  • ■VBAマクロでワークブックAにワークブックBの集計をしたい。

    ■VBAマクロでワークブックAにワークブックBの集計をしたい。 ただし、ワークブックBは同じ番号で何個もあり、日付も並んでいません。 またワークブックAにあってBにない番号、また逆もあります。 それを日付が近いものから3つまで表示。 例) ワークブックA (sheet1)  番号 メモA1  メモA2 メモB1  メモB2 メモC1 メモC3 11111 2010/7/7  ccc 2010/5/5 ddd 2010/3/3 bbb 22222 2010/10/10 fff 2010/2/2 eee 35851 2010/12/12 ggg 54321 ワークブックB (sheet1) 番号  日付  メモ 11111 2009/1/1 aaa 11111 2010/3/3 bbb 11111 2010/7/7 ccc 11111 2010/5/5 ddd 22222 2010/2/2 eee 23568 2010/4/4 hhh 22222 2010/10/10 fff 35851 2010/12/12 ggg ※ワークブックAは最初項目と番号以外メモ部分は白紙です。例)は実行後の結果です。 質問で足りない部分ありましたら補足を入れますのでよろしくお願い致しますm(__)m

  • Excel2003 マクロ(VBA) どこにあるか分からないフォルダAのワークブックAを開く

    いつもお世話になっております。 新しいマクロの記録でフォルダAのワークブックAを開きました。 ChDir "C:\フォルダA" Workbooks.Open Filename:= _ "C:\フォルダA\ワークシートA.xls" しかし、今はフォルダAがCドライブにありますが、 明日はデスクトップ上にあったり、フォルダBの中に入っていたりするかもしれません。 このような時、上記のようなVBAでは開けません。 どこにあるか分からないフォルダAのワークブックAを開くには どこをどのように直せばよろしいのでしょうか? 以上、よろしくお願いいたします。

  • Excel VBAで、フォルダの中に特定の名前のワークブックが存在するかを調べたい。

    VBA初心者です。 マクロを利用して新しいワークブックを作成し、名前を付けて保存したいのですが、フォルダ内に既に同じ名前のワークブックが存在する場合、警告に対して置換えしないを選択すると、エラーになってしまいます。 そこで、某フォルダ(例えばマイフォルダ)の中に特定の名前のワークブック(例えばマイブック.xls)が存在するかどうかを調べるには、どの様に記述すれば良いのでしょうか?(質問が解り難くて申し訳ありません) あるいは、新しく作成したワークブックの名前を、保存しないで変更することは可能なのでしょうか? よろしくお願いします。

  • EXCEL VBA 複数のファイルをひとつのシートにまとめたい

    多数のユーザーから集計表が送られてくるので、いくつかの取り纏めの箇所を経由して集計をまとめようと思います。 マクロでそれぞれの集計表を特定のフォルダに格納し、フォルダ内の対象ファイルを探し、そのファイル名をシートに書き出すところまで行ったのですが、ひとつのファイルのひとつのシートにまとめる方法がわかりません。 (元の集計表は総て同じレイアウトになっています。 これをひとつのシートの下方向に追加していくようにひとつの表にまとめたいのです。) ある取り纏め担当者は3つのファイルをまとめれば済むかもしれませんが、ある担当者は20個のファイルをまとめないといけないかもしれません。 この後をどうすればよいか、どなたかお教えください。 宜しくお願いいたします。 説明が分かり難いようでしたら申し訳ございません。

  • VBA SAVEするワークブックを切替たい

    VBA初心者です SAVEするワークブックを切替えたいのですが、どうすれば可能でしょうか? 例えば (1)マクロのワークブック (2)A(標準フォーマットファイル) (3)B(データファイル) とした場合、(3)を(2)に貼り付けて、(2)を別名で保存(ダイアログで)したいのですが、(1)が別名 で保存されてしまいます (2)のファイル名で貼り付けは完了しています ダイアログ無しでのファイル名指定であれば SAVEできます ダイアログでのSAVEを、(1)から(2)に切替えられれば良いのですが OS:Windows8PRO Excel2010

  • ワークブックを開くマクロが動きません。

    D列7行目のセル以降に記入したワークブックを次々と開きたいと思い、マクロを書いてみたのですが、実行時エラー424、オブジェクトが必要ですとのメッセージが出力され、ブックが開きません。 どこを修正すればよろしいでしょうか?アドバイスを頂けないでしょうか。   || D | 7行||テスト1| 8行||テスト2| 9行||テスト3| Sub ワークブックオープン() '■変数設定 Dim Mypath As String, x As Integer, MycelNO As Integer Dim Myworkbook As String, Mybook As String Mypath = ActiveWorkbook.Path '格納フォルダのパスを取得する。 MycelNO = Range("D7").CurrentRegion.Rows.Count 'D列の処理ブックの数を数える。 '■連続実行 '--処理開始----------------------------------------------------------------- For x = 7 To 7 + MycelNO Mybook = Cells(x, 4) Myworkbook = Mypath & "\" & Mybook & ".xls" Workbook.Open Filename:=Myworkbook Next x End Sub

  • Excel内の1つ1つの項目を拾い目次化するには?

    よろしくお願いします。 Excel2007(or2003)で作成した文章があり、 1つのBook内に複数のシートがあります。 各シート名を拾い、目次化するマクロはいくつか Googleで検索して見つけたのですが、 各シート内に記載されている1つ1つの項目を拾って 目次を作成する方法はないものでしょうか? あまりに大量の文章であるため、困っています。 なお、そういったマクロは見つかりませんでした・・・。 自身で作成しようと試みましたが、私にはハードルが高すぎるようです。 ぞうぞ、アドバイス・ヒントなど御座いましたらよろしくお願いします。

  • ■マクロを使い別のワークブック&シートを参照して表示させる

    ■マクロを使い別のワークブック&シートを参照して表示させる AとBのワークブックがあり、集計をしてワークブックBシートaに( ) の中身を入れたい場合マクロで記述するにはどうしたらいいでしょうか ? ワークブックA(出荷部門報告) No. 商品番号 注文数 出荷完了(1:完了、0:未完) 1  AAA   50   1 2  BBB   30   0 3  CCC   10   1 4 DDD 20 0 ワークブックB シートa(管理) 未出荷商品番号 残必要数 必要日数 (BBB)    (15)  (1) (DDD) (19)  (19) シートb(生産部門報告) 商品番号 生産完了  BBB 10 BBB 5 CCC 10 DDD 1 シートc(調達部門報告) 商品番号 生産必要日数/1 AAA   25 BBB   30 CCC   3 DDD   1 <ワークブックBシートaに入るのは出荷未完(0)のみ> <シートb、cは追加(変更)されていきます> 質問で意味が分からない部分がありましたら、追加いたしますのでよろ しくお願い致します。

  • ExcelVBA 他ワークブックへデータ書き出し

    いつもお世話になっております。 教えてください。 現在開いているExcelブックの特定箇所をボタンワンプッシュで、他Excelシートまでデータを書き出ししたいと考えておりますが、エラー発生のため、マクロ実行することができず困っております。コードを訂正する必要があると思うのですが、どのように訂正したらよいかわからず、ご教示頂けないかと思います。よろしくお願いします。 ex)添付ファイルを参照ください。現在開いているシート(シートA.xls)の特定箇所(A1)をマクロボタンを押下すると、他Excelシート(Cドライブの【シート】フォルダ内の【シートB】.xls)までデータを書き出ししたい(書き出す場所はシートAと同じA1)と考えております。 ※小生作成VBAコード Sub test() Workbooks("C:\シート\Bシート.xls").Worksheets("sheet1").Range("A1").Value = Workbooks("Aシート.xls").Worksheets("sheet1").Range("A1") End Sub

専門家に質問してみよう