Excel VBAの使い方/マクロ・VBA

ファイル名一括変更のマクロ(ファイル名変更)

複数のファイルの名前を一括で変更するマクロプログラム「リネームマクロ」の作成方法を連載形式で紹介しています。第2回目のこの記事では、ファイル名を変更する部分のマクロを作成します。

緑川 吉行

執筆者:緑川 吉行

エクセル(Excel)の使い方ガイド

今回作成するマクロの概要

連載第1回目の「ファイル名一括変更のマクロ(一覧作成)」では、名前を変更したいファイルの一覧を作成するマクロを作成しました。このマクロを実行して「旧ファイル名一覧」にファイル名を自動入力したあと、「新ファイル名一覧」にそれぞれの変更後のファイル名を手入力します。今回作成するマクロでは、この「旧ファイル名一覧」と「新ファイル名一覧」を使用して、ファイル名を変更する処理を記述します。
今回作成するマクロの概要

今回作成するマクロの概要



ファイル名はFileCopyステートメントを使用して変更する

ファイル名を変更するには、いくつか方法がありますが、今回は「ExcelVBAでファイル処理を実行してみよう」で紹介したFileCopyステートメントを使用します。本来、このステートメントは、引数Sourceに指定されたファイルを、引数Destinationに指定された場所にコピーするステートメントですが、引数Destinationに変更後のファイル名を指定することで、ファイルをコピーしながらファイル名を変更することができます。この性質を利用して、ファイル名を変更するマクロを作成します。
引数Destinationに別なファイル名を指定することで、ファイルをコピーしながらファイル名を変更する

引数Destinationに別なファイル名を指定することで、ファイルをコピーしながらファイル名を変更する


このFileCopyステートメントは、ファイル名一覧の各行について繰り返し実行する必要があります。そこで、今回もDo...Loopステートメントを使用して繰り返し処理を記述しましょう。ポイントとなるのは、下図のとおり、7行目からA列が空白になるまでFileCopyステートメントを実行する点です。
A列の7行目からA列が空白になるまでFIleCopyステートメントを実行する

A列の7行目からA列が空白になるまでFIleCopyステートメントを実行する



ファイル名を変更するマクロを作成しよう

Do...Loopステートメントでは、カウンタ変数の「宣言」「初期化」「加算」、そして「終了条件」を記述するのでしたね。今回は、7行目からA列が空白になるまで処理を繰り返したいわけですから、宣言したカウンタ変数は「7」で初期化して「1」を加算していき、終了条件を「A列が空白なるまで」とします。したがって、FileCopyステートメントを繰り返し実行するマクロは下図のような形になります。
FileCopyステートメントを繰り返し実行するマクロ

FileCopyステートメントを繰り返し実行するマクロ



引数Sourceには、名前を変更したいファイルのファイルパスを指定します。ファイルの場所はセルB2に入力されている「コピー元フォルダパス」、ファイル名はA列の「旧ファイル名一覧」に入力されているファイル名です。また、ファイル名一覧を7行目から次々と参照していくには、Do...Loopステートメントのカウンタ変数iを利用して、「i行1列目のセル」を参照すればよいので、引数Sourceは下図のように指定します。フォルダパスとファイル名を「?」でつなぐことを忘れないようにしましょう。
引数Sourceの指定

引数Sourceの指定



同様に、引数Destinationには「コピー先フォルダパス」と「新ファイル名一覧のファイル名」を使用して記述します。「新ファイル名一覧」はB列にあるので、「i行2列目のセル」を参照します。
引数Destinationの指定

引数Destinationの指定



この内容を、前回作成したマクロの下側に入力します。ここでは、マクロの名前を「ファイル名変更」としておきましょう。また、処理が終了したことが明確にわかるように、MsgBox関数で「リネーム処理が終了しました。」というメッセージを表示するステートメントを記述しておきます。
「ファイル名変更」マクロを記述

「ファイル名変更」マクロを記述


今回も、エラー処理を記述しておきましょう。次ページへどうぞ!

  • 1
  • 2
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます