VBAを使い、同一フォルダにあるファイルの特定のシートの情報を取得したい

このQ&Aのポイント
  • VBAを使用して、同じフォルダ内にある特定の文字列を含むファイルの特定のシートから情報を取得する方法についてご質問です。
  • Xというエクセルファイルと同じフォルダ内に存在する、ファイル名に特定の文字列(例えば「月報」)を含む全てのエクセルファイルの、特定の文字列(例えば「○年○月」)を含んだ全シートの、一定のセル範囲を一つのシートにまとめる方法を教えてください。
  • 環境はxp、エクセル2003で、同一フォルダにある特定の文字列を含むファイルの特定のシートから、一定のセル範囲の情報を取得し、まとめたいと考えています。VBAを使用して実現する予定ですが、具体的な方法を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

VBAを使い、同一フォルダにあるファイルの特定のシートの情報を取得したい

はじめまして。 書籍や過去の質問等を調べましたが、類似するものを見つけられなかったため質問させていただきます。 Xというエクセルファイルで、Xと同一フォルダ内にある、ファイル名に特定の文字列(例えば「月報」)を含んだ全てのエクセルファイルの、特定の文字列(例えば「○年○月」)を含んだ全シートの、一定のセル範囲をひとつのシートにまとめたいと思っています。 X内のコマンドボタンで動かす予定ですが、複数のボタンになると自分では思っています(ボタンAでファイル名の取得、ボタンBでシートの取得、ボタンCでセルに貼り付け、みたいな感じで。ボタンの数は特に制限はないです) 要点としては a, 定定の文字列を含んだファイル名の取得 b, aで取得したファイル内の特定の文字列を含んだ全てのシート内の一定のセル範囲の取得(シートの数はファイルによる。必ずしも1つというわけではない。) c. bで取得した一定のセル範囲のデータを、1つのシートにまとめる。 あとはこれらのデータをtxtやcsvなどに出力できるようにするつもりです。 私がやってできたのは、同一フォルダ内にあるファイル名に特定の文字列を含むファイルの全てのファイル名を指定したセルに吐き出すことしかできませんでした。 なんか、ややこしい表現かもしれませんが、ご指導お願いします。 環境はxp、エクセル2003です。 よろしくお願いします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

試しにマクロを組んでみました。 使えるところがあれば利用してください。 Sub test()   Dim myPath As String   Dim myDir As String   Dim myFile As String   Dim myWS As Worksheet      myPath = "D:\Exceldata\"   myFile = Dir(myPath, vbNormal)      Application.ScreenUpdating = False   Do Until myFile = ""     If myFile <> "." And myFile <> ".." Then       If (GetAttr(myPath & myFile) And 16) <> 16 Then         If myFile Like "教えて*" Then           Workbooks.Open myDir & myFile           For Each myWS In Workbooks(myFile).Worksheets             If myWS.Name Like "Sheet*" Then               MsgBox myFile & vbCrLf & _                   myWS.Name & vbCrLf & _                   "A1のデータ: " & myWS.Range("A1").Value             End If           Next           Workbooks(myFile).Close SaveChanges:=False         End If       End If     End If     myFile = Dir   Loop   Application.ScreenUpdating = True End Sub

batapi
質問者

お礼

回答いただきありがとうございます。 >myPath = "D:\Exceldata\" は、フォルダを入れればいいのですよね? >If myFile Like "教えて*" Then にはファイル名に含まれる文字列を入れればいいんですよね? 色々試してみましたがなかなか動きません。 というか私がコードを理解していないようです・・・・ もう少し色々試してみたいと思います。 ありがとうございます。 あと、すいません。使っているのはエクセル2000でした。

関連するQ&A

  • エクセルVBAをつかってフォルダ内のファイルの特定シートのデータを1つのシートにまとめる

    はじめまして。 過去ログ検索しましたが、載っていないようなので投稿させていただきます。 ブックAがあるフォルダ内にある「○年*.xls」のさらに「○月(○月以外のシートもあり)」のシート内の特定のセル(範囲は固定されてます)の文字列を、全てブックAの1つのシートにまとめたいのですが、VBAにてこれは可能ですか? フォルダ内のファイルが複数だったり、またそのファイル内の該当シートが1つだったり複数だったりで、かなり行き詰ってます。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2000を使用しております。

  • EXCEL VBAを使ってファイル内にある特定の文字すべてに色をつけたい

    おはようございます。 EXCEL VBAであるひとつのEXCELファイルの中のすべてのシートの特定の文字が入っているセルに色をつけるにはどのようなコードを使えばいいでしょうか? (例)田中 という文字列が入っているセルはすべてブルーの色がつくという感じです。 教えて下さい。 よろしくお願いします。

  • エクセルマクロで特定シートの特定セルの中身取得

    エクセルのマクロで、ファイル選択(GetOpenFilename)で取得したファイルの特定のシート(sheet1等固定のシート名)とそのシートの特定のセル(A1等固定のセル)にある数値を取得し、マクロ起動したエクセルのあるセルに貼り付けたいのですが、どうすればよいでしょうか。 かなり略してますが、 nama=GetOpenFilename で選択したファイルのファイル名を Range("A1") = Dir(name) で貼り付け、その横のセル(A2)に name#sheet!A1を貼り付けたいのです。 ご存知な方、すみませんが教えていただけますでしょうか。 (エクセルは2003です。)

  • 別のシートに特定の文字だけ転送する計算式やVBA

    エクセルファイルのシート「No.1」のセルA1~A30に氏名が入力されて、セルB1~E30に氏名に振り分けられた文字が入力されています。 この文字には不定期にXとTの文字が入力されています。 そして、このシートに入力された氏名の順番や文字は毎月変更されます。 同じエクセルファイルのシート「No.2」のA1~A30には順番が変更されない氏名が入力されて、B1~E30は文字が何も入力されていない空白の状態です。 コマンドボタンを押すとシート「No.1」のA1~A30に入力された氏名に該当するB1~E30のXとTのみ抽出して、シート「No.2」のB1~E30にXとTの文字のみを張り付けるVBAやセルに入力する計算式はどの様に行えば良いでしょうか?

  • エクセル VBA 特定のシートを保存

    エクセルファイルで複数シートがある中で特定のシートのみをボタンを押すことで以下の要件を満たした形で別ファイルとして保存したいと思っていますが、何分VBA初心者の自分にはハードルが高く困っています。どうかお助け下さい。 要件 ①ファイル名はシート名+(セルW5の数値)  セルW5の数値はシート1から飛んできている数式 ②保存先は任意のフォルダーを指定 ③保存後のファイルにはマクロボタンを消去 ④拡張子はxlsx形式で保存 高望みだと思いますがどうぞよろしくお願いします。

  • VBAのDIR関数でファイル名「0005」などが「5」だけにならない様にするには?

    あるフォルダ内に有るファイル郡の名称をDir関数で取得してExcelのシートのA列に並べるマクロなんですが、0で始まる数字のファイル名の場合、セルには0が省かれて入ってしまいます。 0011なら0011とそのままセルに入れるには(文字列として入れるには?)、マクロはどう書けばいいんでしょうか? 

  • 複数あるブックの特定シートの特定範囲を1つにしたい

    EXCEL2010を使用しています。 あるフォルダに格納されている複数のブックの、特定シートを、1つのシートにまとめたいです。 複数のブックの作りは同じです。 1つのブックに、複数シートがあり、"(配置)"というシートだけを、新規のシートにまとめたいです。 <今ある各ブック> ファイル名は、2014年度特定措置_●●.xlsで、●●だけ、ブック名が違います。 シート名が"(配置)"です。 c3セルに部署名が入っています。 b4セルからe10セルまで数式が入っています。 <行いたいこと> 新規のシートのa列に、各ブックにあるc3セルの部署名を持ってきたい。 b列からe列に、各ブックにあるb4セルからe10セルまでの数式を値張りし、取り込みたい。 以上です。 つたない説明で恐縮ですが、大変困っております。 どうか、ご回答の程、どうぞよろしくお願いいたします。

  • VBA フォルダ内の特定ブック内のシートを特定し、それらのセルの値を全て1つにまとめる

    はじめまして。 excel2000ですが・・・ 以下の過去ログと類似しているのですが、 http://oshiete1.goo.ne.jp/qa4134321.html 管理表.xlsと同一フォルダ内に、 予定表1.xls (sheet1, sheet予定1, sheet予定2, sheet2) 予定表2.xls (sheet1, sheet予定2, sheet予定3, sheet2) 予定表3.xls (sheet1, sheet2, sheet予定1, sheet予定5) 予定表4.xls (sheet1, sheet予定4, sheet予定2, sheet2) 予定表5.xls (sheet予定2, sheet予定1, sheet1, sheet2) ・ ・ ・ (管理表.xlsもあります) が、あるとします。 フォルダ内の全ての「予定表*.xls」ブックの中の「sheet予定*」シートの一定の範囲の値を「管理表.xls」の「sheet1」にまとめたいと思っています。 ここでやっかいなのが、「sheet予定*」は、同一のフォーマットなので、まとめやすいと思ったのですが、セルが結合されていたり、マクロが入っていたりで、なかなか思うようにペーストできません。必要なのは値だけなので、「Sheet予定*」の一定範囲(B4:I4、B5:I5、B6:I6・・・)の値を「管理表.xls」の「sheet1」のそれぞれ1行ずつ(例えばA4:H4、A5:H5・・・)にまとめていきたいです(コピペではなく参照の方がよいのでしょうか)。 自分でやろうとして色々調べながらできたのは、フォルダ内のファイル名「予定表*.xls」の取得のみです。「sheet予定*」の値の参照もやってみましたが、上書きされ、結局最後にコピーした「sheet*」予定のセルの範囲のみが貼り付けられて終わってしまいました。 長々と書いてしまって申し訳ありませんが、わかる方いらっしゃいましたら、ご指導いただきたいと思います。

  • EXCEL VBA 別シートで検索後、貼り付け

    excel2010 (ブック名A.xlsx)にシート名SA、シート名SBがあります。 シート名SAのC列に検索対象(C1~C50位)があり シート名SBのB列が検索範囲(流動的ですがB1~B100位の範囲)です。 検索対象は文字列で、これが検索範囲のセルにに含まれていた場合 検索範囲の隣のセルCxxに検索対象文字列をコピー&ペーストしたいです また、検索範囲の行数に値があるまで、順次処理をしていきたいです

  • エクセルVBAでフォルダ内の全てのファイルにマスタファイルのsheet

    エクセルVBAでフォルダ内の全てのファイルにマスタファイルのsheet1!B2:X200の値を、同じく各ファイルのsheet1!B2:X200に書き込み、保存させるにはどのようにすればよいでしょうか? またそんなことは出来るのでしょうか? ご教授願います。

専門家に質問してみよう