• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【大至急】excel2003 VBAマクロの質問)

【大至急】excel2003 VBAマクロの質問

このQ&Aのポイント
  • excel2003でのVBAマクロを作成し、サブフォルダ配下にフォルダ名_test.xlsというファイルを作成する方法を教えてください。
  • マクロ.xlsを自分のファイルパスを検索し、同じフォルダのサブフォルダにtemplate.xlsからコピーしてフォルダ名_test.xlsファイルを作成します。
  • 既にフォルダ名_test.xlsファイルが存在する場合は作成せず、次のフォルダに進みます。フォルダがなくなるまで繰り返します。

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

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

え~と、どうしても Excel マクロでなくては駄目ですか? バッチファイルで簡単に出来ちゃったんですが…… @echo off for /d %%d in (*) do ( if not exist %%d\%%d_test.xls copy template.xls %%d\%%d_test.xls )

testdb1
質問者

お礼

ご回答ありがとうございます! バッチファイルで処理するという発想がなかったので、VBAで質問しましたが 今回の急ぎで必要な処理に対して大変助かりました! 次からバッチの基礎も勉強してどちらで質問すればよいか考えて質問します! ありがとうございました

その他の回答 (1)

回答No.2

※ コードがインデントしてる部分は全角スペースを使っているのでコピペするなら半角スペースに置き換えること。 ※ Excel 2007 で作ったので適宜 Excel 2003 用に直すこと。(たぶん拡張子ぐらい) VBA でやりたいのなら FileSystemObject を使う。 参照設定で Microsoft Scripting Runtime を取り込む。 Sub test1()   Const prefix As String = "_test.xlsx" ' コピー時につける名前の固定部分   Const template As String = "template.xlsx" ' テンプレートのファイル名   Dim fso As New Scripting.FileSystemObject   Dim root As Scripting.Folder   Set root = fso.GetFolder(ThisWorkbook.Path) ' 起点のフォルダ   Dim subf As Scripting.Folder   For Each subf In root.SubFolders ' 起点フォルダのサブ フォルダをループ     Dim newFileName As String     newFileName = subf.Name & prefix ' コピー時につける新しいファイル名     ' 上記新しい名前に合致するファイルが存在しなければ、テンプレートファイルをコピー     If Not fso.FileExists(fso.BuildPath(subf.Path, newFileName)) Then       fso.CopyFile fso.BuildPath(root.Path, template), fso.BuildPath(subf.Path, newFileName)     End If   Next End Sub

testdb1
質問者

お礼

ご回答ありがとうございます! 今回の用途では、急ぎだった為hitomuraさんのバッチファイルでも非常に助かりましたが、他にも今回と似たような処理をしたいものがいくつかありまして、temtecomai2さんがご教示してくださいましたものは部分的に改変して別の形で活かせそうです! 特に、VBAだと標準モジュールとしても使えるのでご提示いただいたものは 非常に参考になるものですので、すごくありがたいです! ありがとうございました

関連するQ&A