- ベストアンサー
VBAで画像ファイルのファイル名を変更したい
My Picturesには「○○.ico」という画像ファイルが多数あります。 ファイル名の長さはバラバラで規則性はありません。 (○×○.icoだったり、△○×□.icoだったり) それを全て 「Access用001.ico」 「Access用002.ico」 と連番を振って行きたいのですが可能でしょうか? よろしくお願いします。(2003です。)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Dirを使用したマクロ フォルダを必ず.icoのあるフォルダに変更してください Sub test() Dim myF As String Dim myfileB As String Dim myfile As String Dim myF_count As Integer Dim i As Integer myF = "C:\My Pictures" 'フォルダを指定 myfileB = Dir(myF & "\" & "*.ico") If myfileB = "" Then Exit Sub i = 0 Do i = i + 1 myfile = Dir() Loop Until myfile = "" myF_count = i myfile = Dir(myF & "\" & "*.ico") For i = 1 To myF_count Name myF & "\" & myfile As myF & "\" & "Access用" & Format(i, "000") & ".ico" myfile = Dir() Next i End Sub バックアップを取って実行してください
その他の回答 (1)
- kenpon24
- ベストアンサー率64% (66/102)
2003ならFileSearchオブジェクトを使うのが簡単ですかね。 使い方 http://www.moug.net/tech/exvba/0060051.htm LookInプロパティにMyPicture FileNameプロパティに"*.ico"を指定 MyPictureのみ処理対象にしたければ.SearchSubFoldersはFalseにしたほうがよいでしょう。 見つかった結果.FoundFiles(i)にはファイルのフルパスが設定されます。 これに対し連番を振りつつリネームしてあげればいいわけです。 バックアップを取ってから実行することをおすすめします。 dim Temp as string For i = 1 To .FoundFiles.Count 'ファイル名とパスの間に\を挟んでおく If Right(.LookIn, 1) <> "\" Then Temp = "\" Else Temp = "" End If Temp = Temp & "Access用" & Format(i, "000") & ".ico" '連番ファイル名を作成する 3桁限定 Name (.FoundFiles(i)) As .LookIn & Temp 'リネーム実行 Next i Format関数の"000"で3桁の文字列を作っています。 4桁にしたければ"0000"とします。
お礼
解決できました!ありがとうございます!!
お礼
解決できました!ありがとうございます!!