こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

フォルダ内のファイル名の末尾7文字を一括置換

フォルダ内のファイル名の末尾7文字を一括置換

こんにちは、VBA初心者です。

D:\test フォルダに test_jp.txt、sample_jp.txt、testsample_jp.txt といった名前のファイルが格納されているとします。

これらのファイル名の「_jp.txt」の部分(末尾7文字の部分)を「_en.txt」に置換したいのですが、うまくいきません。

以下のようなプログラムを書いてみたのですが、どこがいけないのでしょうか。

※「実行時エラー53 ファイル名が見つかりません。」となります。
※ VBEのローカルペインによると、エラー時には filename 変数に sample_jp.txt が格納されています。

Sub ファイル名置換()
Dim fileName As String

fileName = Dir("D:\test\*_ja.txt")

Do Until fileName = ""

Name "D:\test" & fileName As "D:\test" & Left(fileName, Len(filename) - 7) & "_de.txt"
filename = Dir()

Loop

End Sub

投稿日時 - 2010-10-11 19:43:27

QNo.6243179

困ってます

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

こんばんは。

ディレクトリとファイル名を区切る「\」が抜け落ちています。
それから言ってることとコードが正しく対応していません。
これで当方では動きました。

いきなりリネームするのではなく、「Debug.Print」などを入れて正しく
ファイルをとらえているかどうか、確認するとよいです。
(イミディエイト・ウィンドウに出力されます)

Sub ファイル名置換()
Dim fileName As String

fileName = Dir("D:\test\*_ip.txt")
Do Until fileName = ""
' Debug.Print fileName
Name "D:\test\" & fileName As "D:\test\" & Left(fileName, Len(fileName) - 7) & "_en.txt"
fileName = Dir()
Loop
End Sub

投稿日時 - 2010-10-11 20:34:14

お礼

早速のご回答ありがとうございます!

おっしゃるとおり D:\test の後の \ が抜けていたのが原因でした。
VBAの勉強を始めたばかりなので、うっかりミスなのか、構文に問題があるのか、自分ではなかなか判断がつきません。。。

質問の内容とコードが一致していないのは、「教えて」用にコードを書きなおしたときに間違えてしまいました。

質問するときは、そういうところも気を付けないとマズイですよね。
今後は気をつけます。

投稿日時 - 2010-10-11 21:57:32

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問