• ベストアンサー

フィルダー名の変更をVBAで一括処理

フィルダー名の変更をVBAで一括処理できる方法を教えて下さい。 例えば、処理対象の複数のフォルダー名   安全規制(2018)   安全規制(2008)三班   ------ を一括指定して   2018 安全規制   2008 安全規制 三班   -----  のように   (数字)を先頭に移動したいのです。   (移動前の処理対象は、削除) (数字)は、1箇所しか無いはずですが、複数箇所ある場合は   後で手動で処理する場合にそなえて    処理対象から外してもらえると助かります。

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

  • ベストアンサー
回答No.3

文字列の中から最初の半角数字 & 連続で4桁を取り出す関数を作るのが良いかなあ。コードがそれなら今回専用では無くて、他の場合でも使えそうだ。 使うのは、mid関数、数字かどうかの判定、forループくらいでしょうか?

その他の回答 (2)

回答No.2

https://www.tipsfound.com/vba/18023 を参考にして、変更後のディレクトリ名を示す文字列を、元の名前からひねり出せば良い。 変更件数が50位だったら、コードを書かずに手作業でやった方が早い。

NuboChan
質問者

補足

>元の名前からひねり出せば良い。    「言うは易く行うは難し」の状態で       コードを自作するのは難解です。

noname#245936
noname#245936
回答No.1

ぱっと見、面倒くさそうです。 フォルダ名のリネーム自体は簡単ですが、新フォルダ名を作るのがかなり面倒そうです。 フォルダ名文字列を1文字ずつ回すかFindして、数字があればPickupして2000~3000かどうかで年号かを確認後、ファイル名の前につけ、余った「()」を消す処理を入れることになり、作るのに数時間かかりそうです。 そのような時間があれば、手でリネームした方が速そうです。 どうしても大変であれば、DOSコマンドバッチを作成し、テキストエディタで文字列を矩形貼付で新フォルダ名へのRENAMEコマンド集を作り一気に走らせるぐらいでしょうか。 今回限りのプログラムであれば、手の方が速そうです。

NuboChan
質問者

補足

処理が大変とのことですが、  例えば、   ()を消す必要が無くそのままフォルダーの先頭に移動するだけで良いとすれば    処理できそうですか ?   ()内の数字の確認は必要なく、数値はそのままで良いです。         フォルダー名変更後のイメージ       (2018) 安全規制       (1955) 2000年以前 50年代    --------------------------------------    (数字)が複数ある場合を例外として処理から外すチェックが        難しい場合は、最初の(数字)で処理できれば良いです。       後で(数字)の個数を別途チェックして手動で手直しします。

関連するQ&A