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

ExcelVBAでファイル処理を実行してみよう

ExcelVBAは、本格的なプログラミング言語Visual Basicとほぼ同じ機能を持っています。したがって、Excelの自動化だけでなく、様々なプログラムを作成することが可能です。この記事では、ExcelVBAでファイルを処理するプログラムを紹介します。

緑川 吉行

執筆者:緑川 吉行

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

これまで、「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関数」です。


  • 1
  • 2
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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