ExcelVBA

Excel VBAで指定したエクセルファイルを編集する処理を実装してみた

Excel VBAでは、他のエクセルファイルを開き、編集し、保存するような処理を実装することができる。今回は、その処理を行うサンプルプログラムを作成してみたので、共有する。

前提条件

下記記事の「ExcelファイルをExcel マクロ有効ブックとして保存」まで行い、ファイル名「EditExcel.xlsm」で保存済みであること。

Excel VBAを利用してみたExcel VBAを利用すると、Excelファイルを編集する定型的な業務を自動化することができ、他の言語の開発現場でも、Excel VB...

また、「C:\tmp\テスト.xlsx」を作成し、ワークシート名を「テスト」とし、以下の内容で作成済であること。
テスト用のファイル

サンプルプログラムの作成

ファイル「EditExcel.xlsm」を開き、Sheet1シートを以下のように編集する。
作成したプログラムのエクセル_1

作成したプログラムのエクセル_2

セルC5に、編集するファイル名を指定するようになっている。
また、「編集」ボタンはフォームコントロールで作成したボタンで、ボタンが押下されたときに「editExcel」サブプロシージャが呼ばれるようになっている。

さらに、「編集」ボタンが押下されたときに呼ばれる「editExcel」サブプロシージャと、「editExcel」サブプロシージャから呼ばれる「openExcel」ファンクションの内容は、以下の通りで、指定したファイルを開き、一定の編集を行い、保存して閉じるようになっている。

サンプルプログラムの実行結果

前提条件のファイル「C:\tmp\テスト.xlsx」を作成し、ファイル「EditExcel.xlsm」の編集ファイル名が「C:\tmp\テスト.xlsx」の状態で「編集」ボタンを押下した結果は、以下の通り。
サンプルプログラムの実行結果_1

サンプルプログラムの実行結果_2

実行後の「C:\tmp\テスト.xlsx」の内容は以下の通りで、セルB5に「編集しました」と表示されている。
サンプルプログラムの実行結果_3

また、編集ファイル名を指定しなかった場合の実行結果は、以下の通り。
サンプルプログラムの実行結果_4

さらに、編集ファイル名のファイルが存在しない場合の実行結果は、以下の通り。
サンプルプログラムの実行結果_5

また、編集ファイル名がで指定したファイルがエクセルファイルでない場合の実行結果は、以下の通り。
サンプルプログラムの実行結果_6

さらに、編集ファイル名で指定したファイルが既に開いているファイルの場合の実行結果は、以下の通り。
サンプルプログラムの実行結果_7

要点まとめ

  • Excel VBAでは、他のエクセルファイルを開き、編集し、保存するような処理を実装することができる。
  • ファイル名は「Dir([ファイルパス])」で取得できる。
  • ファイルを開く処理は「Workbooks.Open [ファイルパス]」で、ファイルを保存する処理は「Workbooks([ファイル名]).Save」で、ファイルを閉じる処理は「Workbooks([ファイル名]).Close」で、それぞれ実装できる。