Excel VBAでフォルダ内のファイル名を変更する方法

このQ&Aのポイント
  • Excel VBAを使用すると、特定のフォルダ内のファイル名を一括で変更することができます。フォルダ内には日時で名前が付けられた複数のフォルダがあり、それぞれのフォルダ内にはテキストファイルが存在します。これらのテキストファイルの名前を、フォルダ名と組み合わせた形式に変更することができます。
  • 具体的な手順としては、まずExcel VBAを開き、フォルダ選択ダイアログボックスを表示させます。ユーザーが選択したフォルダ内の全てのフォルダを取得し、各フォルダ内のテキストファイルの名前を変更します。名前の変更には、フォルダ名とテキストファイル名を組み合わせた形式を使用します。
  • このような作業を自動化することで、手動でファイル名を変更する手間やミスを省くことができます。大量のフォルダとファイルがある場合でも、Excel VBAを使用することで簡単に一括変更することができます。是非ともご利用ください!
回答を見る
  • ベストアンサー

エクセルVBAでフォルダ指定後、フォルダ内のファイル操作について

あるフォルダ内に大量のフォルダ(フォルダ名は日時)があり、その各フォルダ内にテキストファイルが001.txt、002.txtとあります。 それぞれのテキストファイルの名前をフォルダ名(日時)とテキストファイル名を組み合わせたファイル名にしたいです。 イメージ)  最初に大元のフォルダを選択。     ↓  選択されたフォルダ内にある大量のフォルダから  それぞれのフォルダ名をフォルダ内のテキストファイルへファイル名を変更する。 例)フォルダ名「2006-08-28 11-30」   テキスト名「001.txt」   このファイルを「2006-08-28 11-30-001.txt」 みたいにしたいです。 非常にわかりにくいかもしれません。。 これができると非常に助かりますので、是非ご教示お願いします。

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

  • ベストアンサー
  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.2

返事遅れてすみません。dirはよく知らないとのことですがVBAのHelpで使用例はごらんになりましたか?ポイントは最初はパスを指定するが残りは指定せずに""が返るまで繰り返す点です。もうひとつは最初にフォルダだけを探す為にattributesにvbDirectoryを指定して全てをセルなどに記録するのが良いでしょう。最後に移動するなら同時に一気に行うほうが得策ですよ。もう一度Dirで調べなおす手間がかかりますから。移動はnameで実現できます。

その他の回答 (1)

  • yokomaya
  • ベストアンサー率40% (147/366)
回答No.1

場所は動かさないでリネームだけでいいのですか?イメージだと親フォルダに移した方が扱い易い気がしますが。ご質問はdirで実現出来るのではないかと思います。

komusemari
質問者

補足

回答ありがとうございます。 コメント不足でした。すみません。 最終的には親フォルダに新しいフォルダを作成し、そのフォルダに全テキストデータをリネームして保存したいです。 dirの使い方をよく知らないのですが、 フォルダ内にある多数のフォルダの操作って可能なのでしょうか?

関連するQ&A

  • VB6 拡張子を指定して表示

    こんにちわ。 拡張子を選んで表示する方法について質問させてください。 あるフォルダがあり、その中にはファイル名が・・・ 1.txt 2.txt 3.txt 1.bmp 2.bmp 3.bmp というファイルが6つあります。 コンボボックスを作りそのフォルダを選択したときにテキストファイルのみのファイル名から拡張子を取ったもの 1 2 3 (このように) を入れ、1が選択されたときに text1.textに1.txtの内容を image1に1.bmpの内容を 入れる様にするにはどうしたらいいでしょうか? ファイルの数はテキストとbmpの3つ3つの時もあれば、6つ6つの時もあります。 そのフォルダまでのパスはフォルダ参照で取得したものがpass.txtに入っています。

  • EXCEL VBAでフォルダ操作をしたい

    どなたか、お知恵をお貸し下さいませ。 フォルダ(A)の中に、さらにフォルダがいくつかあり その中にあるフォルダを、順番に開く処理がしたいのです。 「フォルダ選択」を表示させて、そこで選択したフォルダを開くという方法で行なっていたのですが、フォルダの数が多すぎて、それも大変で・・・。 順番に自動的に開いてくれるようにすることはできないものなのでしょうか? 中のフォルダの名前は連番ではありません。 連番にする必要があるのでしたら、その方法もお教え下されば有難いです。(フォルダ名は変更しても支障ありません) 説明がわかりにくいかもしれませんが、よろしく御願いします。

  • アクセス VBA ファイル操作

    ノートパッドなどテキストエディタで開くことができる、拡張子がtxtではないファイルがあります。 そのファイルをテキストエディタで開いて、名前を変えて、テキストファイルとして保存したいのです が、どのようなコードになりますでしょうか? 下記で開くのですが、 Shell "NOTEPAD C:\test\sampl\abc.ini" その後、 SaveAs FileName:="C:\test\temp\xyz.txt", のように処理しようと思ったのですが、上手くいきません。 お手数ですがご教示ください。

  • エクセルVBAからのファイル操作コントロール

     いつもお世話になっております。  エクセル97を使用しています。 VBAでマクロを組む際、処理中で名前の判っているテキストファイル(拡張子txt)を退避させたいケースが発生しました。  単純にあるフォルダから、あるフォルダにコピーをとっておくだけなのですが、エクセルのVBAからコントロール出来るのでしょうか?  出来るなら、どう記述すれば良いか、ご指導願います。  よろしくお願い致します。

  • ファイル名に親フォルダ名をつけたい

    お世話になります。 VBScriptで、下記のような動きをさせたいのですが、 私の頭では全くわかりませんので、ご知識ある方 何卒よろしくお願いします。 Scriptを実行すると、「対象のテキストファイル」の 名前を「親のフォルダ名+"_"+対象のテキストファイル名」 にしたいのです。 例えば、 hogeフォルダに、 「複数のテキストファイル(拡張子.txt)」 「batファイル」 を置いて、 batファイルを実行すると、 現在のテキストファイルの名前の前に,親のフォルダ名をつけたいという 形です。 ※元のテキストファイル名が,「1.txt」なら「hoge__1.txt」にしたい インターネットで、いろいろ調べたのですが、断片的な情報では、 私の頭ではまったくわかりませんでした。。 そこで、大変申し訳ないのですが、実際に動くソースレベルで 教えて頂きたいので、ご知識ある方、何卒よろしくお願い致します。

  • ファイル名一括変換ソフト

    ■[フォルダ0]の中 [保存1] >[フォルダ1] > [テスト] > Text.txt [保存1] >[フォルダ2] > [テスト] > Text.txt [保存1] >[フォルダ3] > [テスト] > Text.txt [保存1] >[フォルダ4] > [テスト] > Text.txt ">"は下位のフォルダです。 こういうフォルダ階層がありファイルがあったときに 一括で各Text.txtの名前を たとえば [保存1] >[フォルダ1] > [テスト] > Text.txt だったら、 "Text.txt" から "フォルダ1.txt"にしたいのです。 数階層上のフォルダ名を指定し、ファイル名にリネームしたいのですが、なにかよいフリーソフトはないでしょうか。 まとめると、 Windowsの検索機能後、ドラッグ&ドロップ、もしくはソフトの検索機能で変更したいファイル名を指定し、好きなフォルダ名を指定してファイル名に付加できるものがないかと思っています。 いままでリネームソフトにはNamery というソフトを使用してきたのですができませんでした。 どなたか、ご存知のソフトがありましたら、教えていただけると助かります。よろしくお願いいたします。

  • (VBA)フォルダー内のファイルを自動で読み込む

    以下でターゲットフォルダーを指定して その中に存在する、テキストファイル(.txt)とMP3ファイル(.mp3)を 各1個ずつをそれぞれ読み込むようにしています。 'フォルダーを一覧から選択 (自由に選べること) MsgBox "ターゲットフォルダーを選択してください。", vbOKOnly + vbQuestion, "Making" With Application.FileDialog(msoFileDialogFolderPicker) With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 TurgetFolder = .SelectedItems(1) Else TurgetFolder = .SelectedItems(1) & "\" End If End If End With 'TEXTファイル選択(ダイアログ) MsgBox "ターゲットになる" & vbCrLf & "テキストファイルを選択してください。", vbOKOnly + vbQuestion, "LIST" ChDir TurgetFolder TurgetTEXT = Application.GetOpenFilename("TEXTファイル(*.txt),*.txt") If VarType(TurgetTEXT) = vbBoolean Then MsgBox "選択がキャンセルされました" Else 'MsgBox TurgetFile & " が選択されました" End If 'Mp3サイズ読み込み() MsgBox "ターゲットMP3を選択してください。", vbOKOnly + vbQuestion, "MP3" TargetMP3 = Application.GetOpenFilename("MP3ファイル,*.mp3") 'MsgBox TargetMP3 Set fso = CreateObject("Scripting.FileSystemObject") Set SHell = CreateObject("Shell.Application") Set Folder = SHell.Namespace(fso.GetFile(TargetMP3).ParentFolder.Path) Target = fso.GetFile(TargetMP3).Name ----------------------------------------------- 今回、間違いが無くなるように フォルダー構造をターゲットフォルダーの中に テキスト及びMP3ファイルが一つずつしかない無い構造にしたので それぞれ別々に指定する必要なく ターゲットフォルダーを指定するとその中に存在する テキスト及びMP3ファイルを自動で指定(読み込む)ように改造したいのですが どのように改造すれば良いでしょうか ?

  • 指定以外のファイルやフォルダを削除したい。

    デスクトップ上にあるファイル、フォルダの内、 指定したファイル、フォルダ以外を削除するBATファイル、 もしくはVBSを作成したいのですが、 どのような記述をすれば良いのでしょうか? OSはWindows2000 server SP4です。 どなたかご教示よろしくお願いいたします。 例: デスクトップに以下の2つのファイルと1つのフォルダがあり、 これ以上デスクトップにファイルやフォルダを増やしたくないのですが、 「hoge2.txt」 「hoge.lnk」 「hoge」 誤って以下のファイルとフォルダを作成してしまいました。 「hoge1.txt」 「hoge.jpg」 「hoge2」 「hoge2.txt」と「hoge.lnk」「hoge」は常にデスクトップに残し、 「hoge1.txt」と「hoge.jpg」「hoge2」を一括削除したい。

  • フォルダ名をファイル内に記載

    もしご存知の方いらっしゃったら、教えてください。 「フォルダ名を、 そのフォルダの中にあるテキストファイルに記載する。」 ことができるソフト等はありますでしょうか? -フォルダ名が「入学式」 -「入学式」フォルダに「01.txt」というファイルが入っている。 -「01.txt」を開かずに、「01.txt」内の冒頭(もしくは指定した箇所)に「入学式」という文字を追加する。 できたらこの操作を、 複数のフォルダに対して一度に行いたいのです。 「入学式」フォルダ内のテキストには「入学式」を追加。 「卒業式」フォルダ内のテキストには「卒業式」を追加。 ・・・・ を一度に行いたいのです。 どうぞよろしくお願いいたします。

  • フォルダだけどファイル扱いにするソフト?

    フォルダだけどファイル扱いにするソフト?の意味なんですが、 エクスプローラーでフォルダを開いていますと、「フォルダ名/ファイル名」を名前順で命名していても、 フォルダとファイルは別の群として表示されますよね? これを何らかのソフトの力を使って、区別なく一続きに表示したいんです。 (例) 001東京営業所.txt 001営業所(フォルダ) 001品目コード(フォルダ) 002大阪営業所.txt 003名古屋営業所.txt また、名前順と同様、日付順にも適用出来ると有り難いです。 ●上記を実現可能な方法、有りませんでしょうか?