VBAワイルドカードで複数ファイルを順次読み込む方法

このQ&Aのポイント
  • VBA初心者の方がワイルドカードを使用して指定したフォルダ内の複数のファイルを順番に読み込む方法について教えてください。
  • 現在、ワイルドカードを使用して1つのファイルを読み込むことはできていますが、複数のファイルを順次読み込む方法がわかりません。
  • Excel2010を使用しており、OSはWindows8PROです。ご教示いただけると幸いです。
回答を見る
  • ベストアンサー

VBA ワイルドカードで順番にファイルを読み込む

VBA初心者です お知恵を貸して下さい ワイルドカードで指定したファイルを、最初の(ここではxyz01.xls)しか読み込まないのではなく、7つのファイル(xyz01.xlsからxyz07.xls)まで1つずつ読み込み、それぞれでマクロを動作させ、(ランダムでも可)別名で7つのファイルに保存することをしたいです ・マクロは1つの動作(あるファイルAをフォーマットBに貼り付け、フォーマットBを別名Cで保存) ・ファイルはAとB、Cです ・ファイル属性は、xyz01.xls, xzy02.xls・・・xyz07.xlsのため、ワイルドカードでxyz*.xlsを読み込ませています→これがxyz01.xlsしか読み込まない!  現在は、あるフォルダに1つ(例えばxyz01.xls)のみを置いて読み込ませています 7つのファイルを同時に置いた状態で、7回読み込ませてマクロを1回ずつ動作させ、それぞれ別名で保存したい 長くなりましたが、よろしくお願いします OS:Windows8PRO Excel2010

  • t2grp
  • お礼率72% (50/69)

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

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

ファイルA,B,Cと「7つのファイル」の関係がさっぱり不明のため、そこはご自分で行ってください。 sub macro1()  dim myPath as string  dim myFile as string  dim TargetFolder as string  mypath = "c:\test\" ’あなたの実際に合わせて適切に記入する事  targetfolder = "c:\test\subfolder\"  myfile = dir(mypath & "xyz*.xls")  do until myfile = ""   workbooks.open mypath & myfile  ’以下実際の作業は自分で実装する事   workbooks(myfile).saveas targetfolder & myfile   workbooks(myfile).close false   myfile = dir()  loop end sub

t2grp
質問者

お礼

ありがとうございます 動作させてみましたが、xyz*.xlsを上書きするのではなくて、別名で保存したいので、saveasの所を修正してみました これだけでは動くようですが、肝心のマクロと合体させるとやはりxyz01.xlsしか読み込みません もうちょっと悩んでみます

その他の回答 (1)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html ↑ VBAの基本はここでたいていわかります

t2grp
質問者

お礼

ありがとうございます そのHPの存在は知ってました あるフォルダの全ファイルを拾ってくるようですね ちょっと意味合いが違うのかと思ってましたが、もうちょっと勉強してみます

関連するQ&A

  • ファイル名変更後も、マクロを動作させたいのですが?

    データ入力用雛形ファイル(入力用.xls)に、データ入力完了後、保存用マクロでデータ部分だけをデータベース蓄積用ファイル(データ.xls)に、コピー・ペースト(数回に分けて)し、元の入力用.xlsを名前を変えて(日付&時間&ID番号.xls)別名保存する、マクロを作りました。 通常はうまくいくのですが、マクロの動作後、訂正箇所が発生したときに、現状ではマクロが正しく動作しません。(ファイル名が変わっているため?) どなたか教えていただけないでしょうか? よろしくお願いします。

  • マクロ VBA ファイル名を連番でつけたいのですが

    マクロ初心者なので教えて頂けるとうれしいです。 保存先フォルダにファイル名を自動で名前をつけて保存させるところまでできたのですが、 保存先フォルダに同名フォルダがある場合に、 もともと指定しているファイル名のお尻に連番をつけていくようにしたいのですが・・・ 例) 選択したシートをコピーして、 「A1+B1+見積書.xls」 という名前をつけて毎回保存していくのですが、 同名のファイルがある場合、 「A1+B1+見積書+1.xls」 「A1+B1+見積書+2.xls」 「A1+B1+見積書+3.xls」    …というふうにお尻に自動で連番をつけて 保存できるようにしたいのです。 宜しくお願い致します!

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

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

  • VBA ファイルの保存方法

    hiroです。 Excel Aファイルを「名前を付けて保存」で、Bというファイル名で保存し、かつ Aファイルをそのまま開きっぱなしにしたいのですが、方法がわかる方教えてください。 通常、「名前を付けて保存」後、Bファイルが即座に開かれて、Aファイルが閉じてしまいます。 理由 (1)Aファイルは閉じたくない、保存したくない (マクロ、セル関数付) (2)Aファイルのマクロ動作後の情報をファイルBとして保存し、ファイルAはそのままにしたい (3)Bファイルはマクロ削除、セル関数はB側で持ちたい  → シートのコピーはセル関数がA側になってしまうので、使用できない わかる方がいらっしゃいましたら、教えてください。よろしくお願いします。 環境 Microsoft XP Excel 2003

  • VBA EXCELファイル選択⇒指定セルコピー

    マクロでこんなことできませんか? 完全でなくても構いませんので、できる範囲で教えてください。 宜しくお願いします。 マクロを起動すると、ファイルを選択するウインドウが開きます。ここで、あるExcelファイル(仮にC:\MYDOCUMENT\EXCEL\AAAA.xls)を選択すると、このファイルのセルB2,B3,B4,B5が、マクロを実行しているファイルの同じセルにコピーされ、更にセルB1に、AAAA.xlsの.xlsを抜いた数値のAAAAが入力されます。 AAAA.xlsは一度オープンになってもかまいませんが、自動的に閉じればベターです。

  • A1セル入力値をファイル名先頭に追加したい。

    マクロ初心者で色々な事例を組み合わせて次のマクロを 作成しました。 A.xlsを開いて一部加工したファイルをB.xlsで保存し さらに一部を消去しC.xlsで保存するマクロです。 今回、B.xlsおよびC.xlsの先頭にA.xlsのA1セルに入力 された6桁の数字を付加して保存したいのですが・・・。 例えばA1セルが123456の時は 123456B.xls 123456C.xls どなたか教えてください。 現在のマクロ Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 strFileName = "B" On Error Resume Next Workbooks(strFileName).Activate ThisWorkbook.SaveAs strFilePath & strFileName '◆個人情報消去 Range("D42:E49").Select Selection.ClearContents Range("d1").Select strFileName = "C" ThisWorkbook.SaveAs strFilePath & strFileName Application.Quit End Sub

  • EXCEL- VBA(CSVファイル→インポート)

    A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】   ◆ファイル名「*.CSV」*は文字数それぞれ違います。   <例:tanaka.xls だったり 09福島.xls>  ◆入っているドライブ   TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習  ◆A~F列にデータが入っている 【やりたいこと】    (1)A~F列はカンマ区切りで全て文字列としたい  (2)元のファイル名でエクセルとして保存したい「*.XLS」

  • エクセル)ファイルを検索し、セルを参照

    Aフォルダ内に入っている複数のファイルがあります。 abc01xyz.xls abc02xyz.xls abc03xyz.xls それぞれのブックのシートX、セルA1にはファイル名にある数字と同じ数字が入っています。 ■質問 abc02xyz.xlsのセルB2に、abc(abc02xyz.xlsのシートX、セルA1の値-1)xyz.xls のシートY、セルB2の値をコピーしたいのですが、どんな関数を使えばよいのでしょうか、いろいろ本をめくったり、インターネットで調べたのですが、なかなか参考になるケースがなくて困っておりまして、どなたか詳しい方、ご指南いただけませんでしょうか・・・。 INDIRECT関数を使うのでしょうか

  • EXCEL:ファイルを閉じるマクロ

    ファイルA.xlsにファイルB.xlsを開くマクロを作りました。 今度はファイルB.xlsにBを閉じるマクロを作りたいのです。 どうやったらいいのでしょうか? そのマクロは実行ボタンを作ってクリックしたら開く・閉じるをするようにしたいです。 よろしくお願いします。

  • VBAで新規ファイル名

    VBAであるテンプレートのファイルを開いて、ファイル名をB3セルに入力された名前で保存したいのです。まず、下にマクロを示します。 Sub 新規_試作マスタ作成() ChDir "C:\Users\H1250-201\Desktop" Workbooks.Open Filename:="C:\Users\H1250-201\Desktop\試作マスター.xlsm" ChDir "D:\A\" & Format(Date, "yyyy年") & "\" & Format(Date, "yyyy年m月") & "" ActiveWorkbook.SaveAs Filename:="D:\A\" & Format(Date, "yyyy年") & "\" & Format(Date, "yyyy年m月") & "\" & Format(Date, "yyyymmdd") & " " & ThisWorkbook.Sheet1.Range("B3").Value & " 試作.xlsm", FileFormat _ :=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False End Sub Dドライブの中のAというフォルダがあり、その中に、2014年→2014年1月の順にフォルダがあります。ただし、Aの中には2013年~2020年、2014年の中には、2014年1月~2014年12月のフォルダがあるのです。そこで、今日の日付を参照してそれに応じたフォルダ分けを行い、ファイルの頭に「日付」、その後に「B3セルに入力された名前」、「試作」の順に 「日付」 「B3セルに入力された名前」 「試作」という名前で保存されるマクロを作成したいのです。 上のマクロでは、ThisWorkbook.Sheet1.Range("B3").Valueの部分がおかしくてうまく行きません。個々の部分をただ文字列として"○○"とするとうまくいきました。 つまり、マクロのある自身のファイルのセルを参照したいのです。差し支えなければご回答願います。

専門家に質問してみよう