これまで、「ExcelVBAで本格的なプログラミングを始めよう」では、Excelに付属しているプログラミング言語VBA(Visual Basic for Applications)を使用して、Excelの操作を自動化する方法を紹介してきました。

実は、このExcelVBA。Microsoft社が開発した本格的なプログラミング言語Visual Basicとほぼ同じ機能を持っているので、パソコン上の特定の操作を自動化することができます。そのなかでも、簡単でオススメなのが「ファイル処理」を実行するステートメントや関数。ファイルのコピーや移動、削除といったファイルの基本操作をExcelVBAで自動実行できます。


ExcelVBAによるファイル処理の活用方法

活用方法としては「手間のかかるファイル処理」の自動実行がオススメ。たとえば、「たくさんのファイルを、名前を変更しながら別フォルダにコピーする」といったようなリネーム処理の自動実行です。

こういった手間のかかるファイル処理は、手作業で行うと、時間がかかるだけでなく操作ミスの危険がありますが、ExcelVBAで自動実行することで、あっという間に間違いなく処理することができます。このリネーム処理の活用事例については、この記事の後半で紹介します。

それでは、ファイル処理を行う主なステートメントや関数を紹介していきましょう。


ファイルをコピーする

ファイルをコピーするには、FileCopyステートメントを使用します。引数Sourceにコピー元のファイル名、引数Destinationにコピー後のファイル名をファイルパスも含めて指定します。
FileCopyステートメントの構文

FileCopyステートメントの構文



簡単なサンプルを作成してみましょう。ここでは、あらかじめ、Cドライブ上に「テスト1」フォルダと「テスト2」フォルダを作成し、新規ブックを「テスト1」フォルダ内に「コピー元.xls」という名前で保存しておきます。そして、ExcelVBAを使って、この「コピー元.xls」ブックを「テスト2」フォルダに「コピー後.xls」という名前でコピーしてみます。
これから作成するサンプルの概要

これから作成するサンプルの概要



まず、ExcelVBAプログラム用に新しいブックを作成して、「ツール」メニュー→「マクロ」→「Visual Basic Editor」をクリックして、VBEを起動します。
※「Alt」キー+「F11」キーを押して起動することもできます。

※「Alt」キー+「F11」キーを押して起動することもできます。



「挿入」メニュー→「標準モジュール」をクリックして、VBAプログラムを記述する新しい標準モジュールを挿入します。
標準モジュールを挿入

標準モジュールを挿入



下図のようにサンプルを入力します。
※数字の半角・全角に注意してください。

※数字の半角・全角に注意してください。



実行するには、作成したプログラム内にカーソルを置いて、「Sub/ユーザーフォームの実行」ボタンをクリックします。
※「F5」キーを押して実行することもできます。

※「F5」キーを押して実行することもできます。



「テスト2」フォルダを開いてみると、「コピー後.xls」が作成されていますね。
「コピー後.xls」が作成された

「コピー後.xls」が作成された


注意すべきポイントとしては、「コピー元のファイルがない」または、「コピー先のフォルダがない」場合にエラーが発生する点です。また、コピー先に同じファイル名がある場合は上書きされます。

本格的にプログラムを作成する場合は、これらのエラー対策を考えながらプログラムを作成します。このとき、「これから操作するファイルが確かに存在するかどうか」を調べる必要があります。その役割を担うのが、次に紹介する「Dir関数」です。