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

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

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

緑川 吉行

執筆者:緑川 吉行

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

この記事では、「ExcelVBAでファイル処理を実行してみよう」で紹介した「リネームマクロ」の作成方法を連載形式で紹介しています。リネームマクロとは、複数のファイルの名前を一括で変更するマクロプログラム。実務で活用できる実用的なマクロです。連載の第1回目となるこの記事では、変更元のファイル名一覧を作成する部分を作成します。また、この記事をとおして、Dir関数の活用ポイントやDo...Loopステートメントの使い方などを実践的に学習できます。


リネームマクロのブックを準備しよう

初回ですので、新規ブックを作成して、「Sheet1」シートに下図のような内容を作成しておきましょう。なお、ファイル名一覧は7行目から入力される点がポイントとなりますので覚えておいてください。
新規ブックを作成してワークシートを作成

新規ブックを作成してワークシートを作成



Dir関数を活用してファイル名一覧を作成する

この記事では、コピー元のファイル名一覧を作成する部分を完成させます。
この記事で作成する機能

この記事で作成する機能



ファイル名一覧を作成するには、ファイルの名前を取得する必要があります。様々な方法が考えられますが、ここではDir関数を使用しましょう。Dir関数は、引数に指定したファイルパスのファイルを検索し、見つかったらファイル名を返します。このDir関数が返すファイル名を利用して、ファイル名一覧を作成しようというわけです。
Dir関数を活用してファイル名を取得

Dir関数を活用してファイル名を取得



ファイル名一覧を作成するには、複数のファイルを次々と検索する必要があります。この処理をDir関数で実現するには、3つのポイントがあります。


ポイント1 ワイルドカードを使用してDir関数の引数を指定する

Dir関数の引数に検索したいファイル名を記述してしまうと、ファイルをひとつしか検索できません。そこで利用したいのが、1つめのポイントとなる「ワイルドカード」という特殊な記号。ワイルドカードとは、どのような文字にもマッチさせることができる記号のことで、「任意の文字列(文字数も任意)」を表す「*(アスタリスク)」なら、「佐*」と記述するだけで、「佐」から始まる文字列をすべて検索できます。
ワイルドカード

任意の文字を表すワイルドカード「*」



このワイルドカードを使用すれば、複数のファイルを検索することができます。たとえば、Cドライブ内の「管理データ」フォルダにあるエクセルのファイルだけをすべて検索したい場合は、「C:?管理データ?*.xls」と記述します。ファイル名の部分でワイルドカードを使用していますね。エクセルのファイルに限らず、すべてのファイルを検索したい場合は、「C:?管理データ?*.*」と記述します。ファイル名だけでなく、拡張子にもワイルドカードを使用しているため、様々な拡張子のファイルを検索できる、というわけです。
ワイルドカードの記述例

ワイルドカードの記述例



ポイント2 2つめ以降のファイルを検索するDir関数の書き方

第2のポイントは、Dir関数の引数の書き方です。1つめのファイルを検索するときは、ワイルドカードを使用したファイルパスを記述しますが、2つめ以降のファイルを検索するときは、Dir関数の引数の記述を省略して「Dir()」と記述します。こうすることで、「1つめのファイル検索のときと同じファイルパス」で検索を続ける命令になるため、同じファイルパスで複数のファイルを次々と検索することができるのです。
2つめ以降のファイルを検索するときは、Dir関数の引数の記述を省略

2つめ以降のファイルを検索するときは、Dir関数の引数の記述を省略



ポイント3 検索を終了するタイミング

第3のポイントは、いつまでファイル検索を続けるか、という問題です。Dir関数を使用する場合、フォルダの中にファイルがいくつあるのか事前にわかりません。したがって、いつ検索を終了するのか、マクロの中で判断する必要があるわけです。ここで活用するのが、Dir関数の『ファイルが存在しないときに「""(空文字)」を返す』という性質。Dir関数が「""」を返したらファイル検索を終了する、ということにします。
Dir関数が「""」を返すまでファイル検索を実行する

Dir関数が「""」を返すまでファイル検索を実行する



作成するマクロのイメージを整理してみよう

Dir関数のポイントが確認できたところで、実際のマクロの流れをイメージしてみましょう。Dir関数でファイルを検索し、Dir関数が返すファイル名をファイル名一覧のセルに入力していくわけですから、マクロの流れは次のようになります。Dir関数で検索したあと、ファイルが見つかったかどうかを確認し、なかったらマクロを終了する点をしっかり押さえておいてください。
作成するマクロのイメージ

作成するマクロのイメージ



このようにして、ファイルの数だけファイル検索を繰り返すわけですが、先にも触れたとおり、事前にファイルの数を把握することができませんし、同じ命令を何度も書くのはナンセンスです。そこで、活用したいのがDo...Loopステートメントです。

Do...Loopステートメントについて解説します。次ページへどうぞ!

  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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