- ベストアンサー
フィルダー名の変更をVBAで一括処理
フィルダー名の変更をVBAで一括処理できる方法を教えて下さい。 例えば、処理対象の複数のフォルダー名 安全規制(2018) 安全規制(2008)三班 ------ を一括指定して 2018 安全規制 2008 安全規制 三班 ----- のように (数字)を先頭に移動したいのです。 (移動前の処理対象は、削除) (数字)は、1箇所しか無いはずですが、複数箇所ある場合は 後で手動で処理する場合にそなえて 処理対象から外してもらえると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
文字列の中から最初の半角数字 & 連続で4桁を取り出す関数を作るのが良いかなあ。コードがそれなら今回専用では無くて、他の場合でも使えそうだ。 使うのは、mid関数、数字かどうかの判定、forループくらいでしょうか?
その他の回答 (2)
- m5048172715
- ベストアンサー率16% (860/5261)
https://www.tipsfound.com/vba/18023 を参考にして、変更後のディレクトリ名を示す文字列を、元の名前からひねり出せば良い。 変更件数が50位だったら、コードを書かずに手作業でやった方が早い。
ぱっと見、面倒くさそうです。 フォルダ名のリネーム自体は簡単ですが、新フォルダ名を作るのがかなり面倒そうです。 フォルダ名文字列を1文字ずつ回すかFindして、数字があればPickupして2000~3000かどうかで年号かを確認後、ファイル名の前につけ、余った「()」を消す処理を入れることになり、作るのに数時間かかりそうです。 そのような時間があれば、手でリネームした方が速そうです。 どうしても大変であれば、DOSコマンドバッチを作成し、テキストエディタで文字列を矩形貼付で新フォルダ名へのRENAMEコマンド集を作り一気に走らせるぐらいでしょうか。 今回限りのプログラムであれば、手の方が速そうです。
補足
処理が大変とのことですが、 例えば、 ()を消す必要が無くそのままフォルダーの先頭に移動するだけで良いとすれば 処理できそうですか ? ()内の数字の確認は必要なく、数値はそのままで良いです。 フォルダー名変更後のイメージ (2018) 安全規制 (1955) 2000年以前 50年代 -------------------------------------- (数字)が複数ある場合を例外として処理から外すチェックが 難しい場合は、最初の(数字)で処理できれば良いです。 後で(数字)の個数を別途チェックして手動で手直しします。
補足
>元の名前からひねり出せば良い。 「言うは易く行うは難し」の状態で コードを自作するのは難解です。