Excel VBA を使った業務自動化で必ず必要になるのが、「ファイル(ブック)を開く・閉じる」処理です。日常の業務では、複数のExcelファイルを開き、データを参照し、必要な情報をコピーして別ファイルへ貼り付けるという作業が頻繁に発生します。しかし、手作業でファイルを開閉するのは時間がかかるうえ、開き忘れや閉じ忘れによる事故も起こりがちです。
そこで役立つのが VBA による自動化です。ファイルの開閉さえ自動化できれば、その後の処理(データ取得、計算、自動転記など)も安定して動かせるため、作業全体の効率が大幅に向上します。本記事では、VBAの Open メソッドと Close メソッドを実務に強い形で解説し、ファイル操作を正確かつ安全に行うためのポイントを紹介していきます。
目次
- ✅ Workbooks.Openでファイルを開く基本から理解する
- ・Openメソッドの基本構文
- ✅ 引数を指定してファイルを開く(読み取り専用・更新保存など)
- ・読み取り専用で開きたい場合
- ・CSVファイルを自動判定して開く
- ✅ 変数に代入して操作する(最も実務で使われる形式)
- ・変数にブックをセット
- ・変数を使う理由
- ✅ Workbooks.Closeでファイルを閉じる
- ・基本構文
- ・保存する/保存しないを選択する
- ✅ 開いたブックを変数から閉じる(確実な方法)
- ✅ ファイル存在チェックでエラーを防ぐ
- ・存在チェック用の関数
- ✅ 複数ファイルを連続で開く・閉じる
- ・フォルダ内のExcelファイルをすべて開く例
- ✅ パスの扱いで失敗しないためのポイント
- ✅ UiPath × Excel の自動化と相性が良い理由
- ✅ まとめ:OpenとCloseを使いこなせば業務自動化の基盤が整う
✅ Workbooks.Openでファイルを開く基本から理解する
・Openメソッドの基本構文
VBAで Excelファイルを開くには、次のように Workbooks.Open を使います。
Workbooks.Open "C:\Data\売上表.xlsx"
これは最も基本的な構文で、フルパス(絶対パス)を指定することで確実に該当ファイルを開くことができます。
・注意すべきポイント
- パスはダブルクォーテーションで囲む
- パスが存在しない場合はエラーが出る
- 新しいインスタンスではなく現在のExcel上で開かれる
実務ではパスの間違いが非常に多いため、事前チェックやフォルダ構造の統一が重要です。
✅ 引数を指定してファイルを開く(読み取り専用・更新保存など)
・読み取り専用で開きたい場合
Workbooks.Open Filename:="C:\Data\売上表.xlsx", ReadOnly:=True
他の担当者がファイルを開いている可能性がある場合、ReadOnly を True にすることで共有時のエラーを回避できます。
・CSVファイルを自動判定して開く
Workbooks.Open "C:\Data\受注データ.csv"
Excelは拡張子を自動判定して最適な形式で開いてくれます。大量のCSVを取り扱う現場では自動化の効果が非常に大きくなります。
✅ 変数に代入して操作する(最も実務で使われる形式)
ファイルを開いた後、特定のブックを扱うために変数を使う方法がよく使われます。
・変数にブックをセット
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Data\売上.xlsx")
これにより、以降は wb を使って以下のような操作が可能になります。
wb.Worksheets("集計").Range("A1").Value = "完了"
・変数を使う理由
- 複数ブックを扱う際に衝突を避けられる
- 名称が似ているブックでも確実に操作できる
- 自動処理の途中でアクティブブックが変わっても処理が壊れない
大規模業務やRPAとの連携を考えると、変数を使った管理は必須スキルになります。
✅ Workbooks.Closeでファイルを閉じる
・基本構文
Workbooks("売上.xlsx").Close
これは既に開かれているファイルを閉じる基本形式です。
・保存する/保存しないを選択する
保存せずに閉じる:
Workbooks("売上.xlsx").Close SaveChanges:=False
保存して閉じる:
Workbooks("売上.xlsx").Close SaveChanges:=True
誤って上書きしてしまう事故を防ぐため、SaveChanges の指定は明示的に行うことが推奨されます。
✅ 開いたブックを変数から閉じる(確実な方法)
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Data\売上.xlsx")
' 何らかの処理
wb.Worksheets("集計").Range("B2") = 100
wb.Close SaveChanges:=True
変数で管理することで、ブック名変更や予期せぬアクティブ切り替えの影響を受けません。
✅ ファイル存在チェックでエラーを防ぐ
ファイルが存在しない状態で Workbooks.Open を実行するとエラーになります。
そのため事前チェックが非常に重要です。
・存在チェック用の関数
Function FileExists(path As String) As Boolean
FileExists = Dir(path) <> ""
End Function
・使用例
If FileExists("C:\Data\売上.xlsx") Then
Workbooks.Open "C:\Data\売上.xlsx"
Else
MsgBox "ファイルが見つかりません"
End If
業務自動化ではこれを入れるだけでエラー率が大幅に下がります。
参考:【VBA】指定したシートを開く方法|Activate・Selectの使い方と実務応用を徹底解説
✅ 複数ファイルを連続で開く・閉じる
・フォルダ内のExcelファイルをすべて開く例
Dim f As String
f = Dir("C:\Data\*.xlsx")
Do While f <> ""
Workbooks.Open "C:\Data\" & f
f = Dir
Loop
大量データを扱う部署では必須のテクニックです。
✅ パスの扱いで失敗しないためのポイント
- フルパスで指定するのが最も安全
- スペースを含むフォルダ名は特に注意
- ネットワークドライブ(\server など)は遅延が発生することがある
正確なパス指定は自動化の成功率を大きく左右します。
✅ UiPath × Excel の自動化と相性が良い理由
VBAでファイル開閉を正しく行えると、UiPathなどのRPA連携が非常にスムーズになります。
- UiPath側はブック操作に弱い部分をVBAで補完
- 「ファイルを開く → シート参照 → 転記」の動作が安定
- Excel Application Scope 内での補助に使える
VBAで開閉フローを安定化させておくと、RPAのフロー全体が強固になります。
✅ まとめ:OpenとCloseを使いこなせば業務自動化の基盤が整う
- Workbooks.Open はファイルを開く基本メソッド
- ReadOnly や引数を使うことで安定動作
- 変数に代入すると複数ブックを確実に管理できる
- ファイル存在チェックでエラーを防止
- Workbooks.Close は保存有無を明示的に指定する
- RPAや大量ファイル処理でも非常に効果を発揮する
ファイル開閉操作は自動化の「入り口」であり、ここを正しく実装すると後の工程すべてが安定します。ぜひ今回の内容を活用し、業務効率を大きく向上させてください。