今回作成するマクロの概要
連載第1回目の「ファイル名一括変更のマクロ(一覧作成)」では、名前を変更したいファイルの一覧を作成するマクロを作成しました。このマクロを実行して「旧ファイル名一覧」にファイル名を自動入力したあと、「新ファイル名一覧」にそれぞれの変更後のファイル名を手入力します。今回作成するマクロでは、この「旧ファイル名一覧」と「新ファイル名一覧」を使用して、ファイル名を変更する処理を記述します。今回作成するマクロの概要
ファイル名はFileCopyステートメントを使用して変更する
ファイル名を変更するには、いくつか方法がありますが、今回は「ExcelVBAでファイル処理を実行してみよう」で紹介したFileCopyステートメントを使用します。本来、このステートメントは、引数Sourceに指定されたファイルを、引数Destinationに指定された場所にコピーするステートメントですが、引数Destinationに変更後のファイル名を指定することで、ファイルをコピーしながらファイル名を変更することができます。この性質を利用して、ファイル名を変更するマクロを作成します。引数Destinationに別なファイル名を指定することで、ファイルをコピーしながらファイル名を変更する
このFileCopyステートメントは、ファイル名一覧の各行について繰り返し実行する必要があります。そこで、今回もDo...Loopステートメントを使用して繰り返し処理を記述しましょう。ポイントとなるのは、下図のとおり、7行目からA列が空白になるまでFileCopyステートメントを実行する点です。
A列の7行目からA列が空白になるまでFIleCopyステートメントを実行する
ファイル名を変更するマクロを作成しよう
Do...Loopステートメントでは、カウンタ変数の「宣言」「初期化」「加算」、そして「終了条件」を記述するのでしたね。今回は、7行目からA列が空白になるまで処理を繰り返したいわけですから、宣言したカウンタ変数は「7」で初期化して「1」を加算していき、終了条件を「A列が空白なるまで」とします。したがって、FileCopyステートメントを繰り返し実行するマクロは下図のような形になります。FileCopyステートメントを繰り返し実行するマクロ
引数Sourceには、名前を変更したいファイルのファイルパスを指定します。ファイルの場所はセルB2に入力されている「コピー元フォルダパス」、ファイル名はA列の「旧ファイル名一覧」に入力されているファイル名です。また、ファイル名一覧を7行目から次々と参照していくには、Do...Loopステートメントのカウンタ変数iを利用して、「i行1列目のセル」を参照すればよいので、引数Sourceは下図のように指定します。フォルダパスとファイル名を「?」でつなぐことを忘れないようにしましょう。
引数Sourceの指定
同様に、引数Destinationには「コピー先フォルダパス」と「新ファイル名一覧のファイル名」を使用して記述します。「新ファイル名一覧」はB列にあるので、「i行2列目のセル」を参照します。
引数Destinationの指定
この内容を、前回作成したマクロの下側に入力します。ここでは、マクロの名前を「ファイル名変更」としておきましょう。また、処理が終了したことが明確にわかるように、MsgBox関数で「リネーム処理が終了しました。」というメッセージを表示するステートメントを記述しておきます。
「ファイル名変更」マクロを記述
>今回も、エラー処理を記述しておきましょう。次ページへどうぞ!