「エクセルVBAでワークブック (ファイル) を上書き保存はどうしたらいいんだろう?」
このように悩んだことはありませんか?

・VBAで特定のファイルを閉じたい。
・ファイルを閉じる際に保存するかどうかを指定したい。



その場合は、VBAの「Workbooks.Saveメソッド」を
使用すると解決します!
この記事では、エクセルVBAの「Workbooks.Saveメソッド」を使用してワークブックを保存して閉じる方法について詳しく説明します。
これを読むことで、ファイルを自動で効率的に保存し、誤って保存し忘れるリスクを減らすことができます。
基本的な使い方から、実際の業務で役立つ応用例まで、分かりやすく解説していきます。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見て「できるようになる」こと
この記事を読めば、以下のことができるようになります。
- VBAのワークブックを閉じる方法を選定できるようになる
- Workbooks.Saveメソッドの構成を習得できるようになる
- Workbooks.Saveメソッドの注意ポイントを学ぶことができる
- 実践でWorkbooks.Saveメソッドを使用する方法を習得する
VBAにおけるワークブックの保存と閉じ方の違い
エクセルVBAでワークブックを保存・閉じるには、主に3つのメソッド(Save, SaveAs, Close)があります。
それぞれのメソッドは異なる目的で使われ、適切に使い分けることで、VBAによる作業効率が大幅に向上します。
- Saveメソッド
- 開いているワークブックをそのまま上書き保存するためのメソッドです。
ファイル名や保存先は変更できませんが、作業中のファイルを迅速に保存したいときに便利です
- 開いているワークブックをそのまま上書き保存するためのメソッドです。
- SaveAsメソッド
- ワークブックを新しい名前や異なる場所に保存でき、ファイル形式(例:
.xlsm
,.xlsx
,.csv
など)を変更することも可能です。
バックアップやバージョン管理に役立ちます。
- ワークブックを新しい名前や異なる場所に保存でき、ファイル形式(例:
- Closeメソッド
- ワークブックを閉じる際に使い、変更があった場合には保存をするかどうかの確認ができます。
エクセルVBAでワークブックを保存・閉じる方法一覧
スクロールできます引用元:エクセルVBAで「Workbooks.Close」を使ってワークブックを保存せずに閉じる方法
Close
メソッド
Save
メソッド
SaveAs
メソッド同じパスで名前を変更して保存 不可 不可 可能 新規パスに保存 不可 不可 可能 上書き保存 可能 可能 可能 保存せずに閉じる 可能 不可 不可 ファイル形式変更 不可 不可 可能 記事を見る 記事を見る 記事を見る ワークブックの保存と閉じ方の違い
Workbooks.Saveメソッドで上書き保存する基本知識
Workbooks.Saveメソッドは、エクセルVBAで開いているワークブックを上書き保存するためのメソッドです。
このメソッドを使うと、VBAコードからワークブックを自動的に保存できます。
特に「ファイルを保存するだけ」というシンプルな操作をしたい場合に役立つ、基本的なメソッドです。
- できること
- 上書き保存(変更内容をそのまま保存)
- できないこと
- ワークブックを閉じることはできません。
Workbooks.Saveメソッドの構成


- ワークブック名 (必須)
- 保存したいワークブック名を指定します。
例:「ActiveWorkbook」、「Workbooks(“ファイル名.xlsx”)」、「Wb.Save」のように使用します。
Workbooks.Saveメソッドには引数がなく、開いているワークブックをそのまま上書き保存します。
- 保存したいワークブック名を指定します。
このように記述することで、ワークブックをそのまま上書き保存します。
より詳しい情報は、Microsoft公式 – Workbooks.Save メソッドを参照してみてください。
Workbooks.Saveメソッドの使用例
'// 現在のブックを上書き保存
ActiveWorkbook.Save
'// 特定のブックを上書き保存
Workbooks("ファイル名.xlsx").Save
これにより、VBAでの上書き保存を簡単に実行できます。
Workbooks.Saveメソッドを使う際の注意ポイント
VBAでワークブックを自動保存する際は、注意すべきいくつかのポイントがあります。
ここでは、誤った操作やエラーを防ぐための対策を紹介します。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。
注意ポイント1: 保存前にワークブックの状態を確認する
保存する前に、ワークブックが編集されたかどうか確認しましょう。
意図しない変更を上書き保存すると、元の状態に戻せなくなる可能性があります。
この問題の対策
Workbook.Savedプロパティを使って、ワークブックが保存済みかどうか確認し、必要に応じて保存処理を実行します。
これにより、編集内容がある場合のみ上書き保存されるため、安全に作業を進められます。
If Not ActiveWorkbook.Saved Then
ActiveWorkbook.Save
End If
注意ポイント2: 保存時のワークブック競合に注意
ネットワーク上や共有ドライブでワークブックを使う場合、複数のユーザーが同時に同じファイルを編集していると、保存時に競合が発生することがあります。
これにより、他のユーザーの編集内容が失われたり、保存に失敗する可能性があります。
ワークブックの状態を確認し、他のユーザーが使用しているかどうかをチェックするコードを導入すると、エラーを防ぐことができます。
この問題の対策
Workbook.ReadOnlyプロパティを活用して、ファイルが読み取り専用で開かれているかを確認したり、ファイルを他のユーザーが使っているか確認するメッセージを表示するコードを導入すると良いでしょう。
If ActiveWorkbook.ReadOnly Then
MsgBox "このワークブックは読み取り専用で開かれています。保存できません。"
Else
ActiveWorkbook.Save
End If
注意ポイント3: 自動保存によるデータ消失を防ぐ
自動保存は便利ですが、誤った変更が頻繁に上書き保存されると、重要なデータを失うリスクがあります。
特に大きなプロジェクトや複雑なワークブックでは、ミスを防ぐために工夫が必要です。
保存する前にバックアップを自動的に作成するVBAコードを追加し、万が一のときに備えてデータを保護します。
この問題の対策
Sub SaveWithBackup()
Dim backupPath As String
backupPath = "C:\Backup\" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs backupPath
ActiveWorkbook.Save
MsgBox "バックアップを保存し、上書き保存しました。"
End Sub
注意ポイント4: 大容量ファイルの保存時間に留意
大きなファイルを保存する際、処理時間が長くなる場合があります。
これにより、保存が完了するまで他の操作ができないことがあり、作業の効率が下がる可能性もあります。
この問題の対策
保存中に進行状況を表示するプロセスバーや、保存完了のメッセージを表示するコードを追加することで、ユーザーの作業負担を減らします。
また、定期的に大容量のファイルを整理・圧縮することも有効です。
Sub SaveWithProgressBar()
Application.StatusBar = "保存中です。お待ちください..."
ActiveWorkbook.Save
Application.StatusBar = False
MsgBox "保存が完了しました。"
End Sub
注意ポイント5: 共有ドライブでの保存エラーの対策
ネットワークや共有ドライブにワークブックを保存する際、接続不良やアクセス権の問題が原因で、保存に失敗することがあります。
これを防ぐための対策を事前に取っておくことが重要です。
この問題の対策
ワークブックを保存する前に、ネットワーク接続状況やアクセス権限を確認するコードを組み込むことで、保存エラーを防止できます。
万が一保存に失敗した場合には、エラーメッセージを表示し、ユーザーに適切な対策を促す仕組みも効果的です。
On Error GoTo SaveError
ActiveWorkbook.Save
Exit Sub
SaveError:
MsgBox "保存に失敗しました。ネットワーク接続やファイルの権限を確認してください。", vbCritical
End Sub
注意ポイント6: ファイル名やパスに関するエラーに注意
保存時に、ファイル名やパスが正しく設定されていないと、ファイルの保存に失敗することがあります。
特に、保存先フォルダが存在しない場合や、ファイル名に無効な文字が含まれている場合が問題です。
この問題の対策
保存前にファイル名やパスが正しいかどうかを確認するコードを追加します。
ファイルが存在しない場合には、新しいフォルダを作成する処理を組み込むことで、エラーを回避できます。
Sub SaveWithPathCheck()
Dim savePath As String
savePath = "C:\保存フォルダ\ファイル名.xlsx"
'// フォルダが存在するか確認し、存在しなければ作成
If Dir("C:\保存フォルダ", vbDirectory) = "" Then
MkDir "C:\保存フォルダ"
End If
'// ファイルを保存
ActiveWorkbook.SaveAs Filename:=savePath
MsgBox "ファイルを保存しました。"
End Sub
Workbooks.Saveメソッドで上書きする使用例をご紹介
ここからは、「Workbooks.Save」の使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
使用例1:Workbooks.Saveメソッドを使用して、ワークブックを保存する
Workbooks.Openメソッドを使用して、ワークブックを保存する方法を紹介します。
コード例 | Workbooks.Saveメソッドを使用して、ワークブックを保存する
Sub 保存する()
Workbooks("ファイル名.xlsx").Save
End Sub
コードの動作概要
新しいサブルーチン「保存する」を定義します。
Workbooks.Saveメソッドを使用して、指定されたファイルを保存します。
ファイルが正常に保存された後、サブルーチンが終了し、次の処理に進みます。
このコードで使用している機能
- なし
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub 保存する()
- この行では、新しいサブルーチン(プロシージャ)「保存する」を定義しています。
サブルーチンは、複数の操作をまとめて実行するための小さなプログラムです。
「Sub 保存する」と定義することで、このサブルーチンが呼び出されるたびに、保存処理が実行されます。
- この行では、新しいサブルーチン(プロシージャ)「保存する」を定義しています。
- Workbooks(“ファイル名.xlsx”).Save
- この行では、現在開いている「ファイル名.xlsx」という名前のエクセルファイルを保存しています。
「Workbooks(“ファイル名.xlsx”)」は、開いているワークブックを指定し、.Saveメソッドを使って、そのファイルを上書き保存します。
重要なのは、このコードがファイルを保存するだけであり、閉じる操作は行いません。
ファイルを閉じたい場合は、別のメソッド(Closeメソッドなど)を使います。
- この行では、現在開いている「ファイル名.xlsx」という名前のエクセルファイルを保存しています。
- End Sub
- この行でサブルーチンが終了します。
すべての保存処理が完了した後、サブルーチンは終了し、次の指示に従ってプログラムが進行します。
VBAコードの処理が中断されることなく、続行します。
- この行でサブルーチンが終了します。
このコードは、VBAを使って特定のワークブックを自動で保存するための非常にシンプルな方法を示しています。
手動で「保存」する手間を省き、プログラムの実行中にワークブックを自動的に保存することで、作業の効率化を図ることができます。
ワークブックの閉じる操作は含まれていないため、ワークブックを閉じたい場合はCloseメソッドを追加する必要があります。
使用例2: オブジェクト変数を使用して保存する方法
オブジェクト変数を使用してワークブックを保存する方法を紹介します。
下記コードは、始めにオブジェクト変数を使用しワークブックを開き、その後に保存を行っています。
コード例 | オブジェクト変数を使用して保存する方法
Sub オブジェクト変数を使用して保存する()
Const filePath As String = "C:\パス\ファイル名.xlsx"
Dim Wb As Workbook
Set Wb = Workbooks.Open(filePath)
'// Wbを使用して処理を実施
Wb.Save
End Sub
コードの動作概要
Const ステートメントを使って、開くファイルのパスを指定します。
Workbook 型のオブジェクト変数「Wb」を宣言し、開いたファイルをこの変数に格納します。
指定したファイルを開き、必要な処理を実施します。
Wb.Saveメソッドを使って、ファイルを上書き保存します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub オブジェクト変数を使用して保存する()
- この行では、新しいサブルーチン(プロシージャ)「オブジェクト変数を使用して保存する」を定義しています。
サブルーチンは、複数の操作をまとめて実行するための小さなプログラムです。
「Sub オブジェクト変数を使用して保存する」と定義することで、このサブルーチンが呼び出されるたびに、保存処理が実行されます。
- この行では、新しいサブルーチン(プロシージャ)「オブジェクト変数を使用して保存する」を定義しています。
- Const filePath As String = “C:\パス\ファイル名.xlsx”
- この行では、「filePath」という名前の定数を宣言し、その値としてファイルのパス(例: “C:\パス\ファイル名.xlsx”)を指定しています。
定数とは、一度設定すると変更できない固定の値のことで、ここではファイルを開くためのパスを指定しています。
- この行では、「filePath」という名前の定数を宣言し、その値としてファイルのパス(例: “C:\パス\ファイル名.xlsx”)を指定しています。
- Dim Wb As Workbook
- この行では、Workbook 型のオブジェクト変数「Wb」を宣言しています。
この変数は、開いたエクセルファイルを保持し、ファイルに対して操作を行う際に使用します。
- この行では、Workbook 型のオブジェクト変数「Wb」を宣言しています。
- Set Wb = Workbooks.Open(filePath)
- ここでは、「Workbooks.Openメソッド」を使用して、指定したファイルパスにあるエクセルファイルを開きます。
「Set ステートメント」を使用して、開いたファイルをオブジェクト変数「Wb」に格納しています。
これにより、「Wb」を通じて開いたファイルにアクセスでき、後でそのファイルに対して操作を行うことが可能になります。
- ここでは、「Workbooks.Openメソッド」を使用して、指定したファイルパスにあるエクセルファイルを開きます。
- ‘// Wbを使用して処理を実施
- この行はコメントとして書かれており、開いたファイルに対して行いたい操作を追加する場所を示しています。
例えば、データの書き込みやシートの操作など、必要な処理をこの部分に記述します。
- この行はコメントとして書かれており、開いたファイルに対して行いたい操作を追加する場所を示しています。
- Wb.Save
- この行では、「Wb.Saveメソッド」を使って、開いたファイルを上書き保存しています。
オブジェクト変数「Wb」を使用することで、指定したファイルに対して簡単に保存操作を実行できます。
- この行では、「Wb.Saveメソッド」を使って、開いたファイルを上書き保存しています。
- End Sub
- この行でサブルーチンが終了します。
ここで一連の保存処理が完了し、プログラムは次のステップへ進みます。
- この行でサブルーチンが終了します。
このコードは、エクセルファイルをオブジェクト変数を使用して開き、処理を実行してから保存する一連の操作を実行します。
オブジェクト変数「Wb」を使用することで、開いたワークブックに対して効率的に操作を行い、その後に保存することができます。
エクセルVBAでの作業効率を上げるために、オブジェクト変数を活用することは非常に有用です。
この記事のまとめ
エクセルVBAでの「Workbooks.Saveメソッド」を活用することで、ワークブックの保存を自動化する方法を学びました。
これにより、作業の効率化が一段と進みます。
再度ポイントのおさらいを行いましょう。
ポイントのおさらい
- Workbooks.Saveメソッドの基本的な使い方を理解する
- 「Workbooks.Saveメソッド」を使用することで、VBAコードから直接エワークブックを保存することができます。
特にワークブックの上書き保存が自動で行えるため、手作業を減らし、業務の効率を向上させることが可能です。
⇒ 「Workbooks.Saveメソッドの基本」をもう一度見る。
- 「Workbooks.Saveメソッド」を使用することで、VBAコードから直接エワークブックを保存することができます。
- Workbooks.Saveメソッドを使う際の注意ポイント
- ワークブックの保存を行う際には、ワークブックの状態を確認することが重要です。
特に複数ユーザーによるワークブックの同時操作や自動保存機能の使用には注意が必要です。
ファイル競合やデータ消失のリスクを最小限に抑える工夫が必要です。
⇒ 「Workbooks.Saveメソッドを使う際の注意ポイント」もう一度見る。
- ワークブックの保存を行う際には、ワークブックの状態を確認することが重要です。
- 使用例を通じて、実践的なファイル保存方法を学ぶ
- 使用例を通じて、基本的なファイル保存の方法やオブジェクト変数を用いた保存手法を学びました。
これらの手法を活用することで、業務に役立つ自動保存スクリプトを作成できます。
⇒ 「Workbooks.Saveメソッドの使用例」もう一度見る。
- 使用例を通じて、基本的なファイル保存の方法やオブジェクト変数を用いた保存手法を学びました。
基本的なワークブックの保存方法から、オブジェクト変数を用いたワークブック操作まで、業務の自動化に活かせるさまざまなテクニックを習得しました。
この記事の使用例を繰り返し実践することで、よりスムーズにVBAを活用したワークブック保存ができるようになります。

