エクセルVBAで「Workbooks.Close」を使ってワークブックを保存せずに閉じる方法

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
workbooks.closeについて

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


VBAで特定のワークブックを閉じたい。

ワークブックを閉じる際に保存するかどうかを指定したい。

その場合は、VBAの「Workbooks.Closeメソッド」を
使用すると解決します!


この記事では、エクセルVBAの「Workbooks.Closeメソッド」を使用してワークブックを閉じる方法について詳しく説明します。

たった1行のコードで、保存の有無を指定しながら簡単にワークブックを閉じることができます。

基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

この記事を見て「できるようになる」こと

この記事を読めば、以下のことができるようになります。

スポンサーリンク

エクセルVBAでの「ワークブックの保存・閉じ方」の違い

エクセルVBAでワークブックを保存・閉じるには、主に3つのメソッド(Save, SaveAs, Close)があります。

ワークブックの保存と閉じ方の違い
  • Closeメソッド
    • ワークブックを閉じる際に使い、変更があった場合には保存をするかどうかの確認ができます。
  • Saveメソッド
    • 開いているワークブックをそのまま上書き保存するためのメソッドです。
      ファイル名や保存先は変更できませんが、作業中のファイルを迅速に保存したいときに便利です
  • SaveAsメソッド
    • ワークブックを新しい名前や異なる場所に保存でき、ファイル形式(例: .xlsm, .xlsx, .csvなど)を変更することも可能です。
      バックアップやバージョン管理に役立ちます。

エクセルVBAでワークブックを保存・閉じる方法一覧

スクロールできます

Close
メソッド

Save
メソッド

SaveAs
メソッド
同じパスで名前を変更して保存不可不可可能
新規パスに保存不可不可可能
上書き保存可能可能可能
保存せずに閉じる可能不可不可
ファイル形式変更不可不可可能
記事を見る記事を見る記事を見る
ワークブックの保存と閉じ方の違い

その中で今回はCloseメソッドについて記載します。

VBAの「Workbooks.Close」の基本について解説

VBAで使用できる「Workbooks.Closeメソッド」は、開いているワークブックを閉じるために使用するVBAのメソッドです。

また、このメソッドを使用することで、ワークブックを「保存する」「保存せず閉じる」ことができます。

Workbooks.Closeメソッドの構成・引数

Workbooks.Closeメソッドは、いくつかの引数を持っており、それぞれに特定の機能があります。


Workbooks.closeの構成について

以下のテーブルに引数をまとめました。

設定解説
  • expression (必須)
    • 保存したいワークブック名を指定します。
      例:「ActiveWorkbook」、「Workbooks(“ファイル名.xlsx”)」、「Wb.Save」のように使用します。

      Workbooks.Saveメソッドには引数がなく、開いているワークブックをそのまま上書き保存します。

引数は下記の通りです。

引数省略可能説明デフォルト値
SaveChanges省略可能変更を保存するかどうかを指定します。
Trueを指定すると保存し、Falseを指定すると
保存せずに閉じます。
False
Filename省略可能変更を保存する場合のファイル名を指定します。
指定しない場合は、元のファイルに上書き保存します。
なし
RouteWorkbook省略可能ルーティング スリップを送信するかどうかを指定します。
Trueを指定すると送信します。
False

より詳しい情報は、Microsoft公式 – Workbooks.Close メソッドを参照してみてください。

VBAの「Workbooks.Close」を使う際の注意ポイント

ファイル名やパスの正確さ

ワークブックを閉じる際には、正しいファイル名やパスを指定することが重要です。

間違った名前やパスを使用するとエラーが発生し、ワークブックを正しく閉じることができません。
ファイル名やパスの指定は正確に行いましょう。

Sub ワークブックを閉じる()
    Workbooks("ファイル名.xlsx").Close
End Sub

ワークブックの状態を事前に確認する

ワークブックが既に閉じられている場合に再度閉じようとすると、エラーが発生することがあります

処理を実行する前に、対象のワークブックがまだ開いているかを確認するコードを追加することで、エラーを防ぐことが可能です。

次のコードでは、ファイル「サンプル1.xlsx」が開いていたら保存せずに閉じますが、すでに閉じられている場合はメッセージボックスを表示して知らせてくれます。

Sub ファイルの状態を確認して閉じる()
    Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks("サンプル1.xlsx") '// 保存するファイル名を指定
    On Error GoTo 0
    
    If Not wb Is Nothing Then
        wb.Close
    Else
        MsgBox "ファイルが開かれていません。"
    End If
End Sub

保存設定の慎重な選択

Workbooks.Closeメソッドを使ってワークブックを閉じる際には、保存するかどうかを慎重に決定する必要があります。

保存を忘れると大切な変更が失われる可能性があるため、以下のように保存設定を指定しましょう。

保存せずに閉じる (SaveChanges:=False)

Workbooks("ファイル名.xlsx").Close SaveChanges:=False

このコードでは、「サンプル.xlsx」というワークブックを保存せずに閉じます。

保存して閉じる (SaveChanges:=True)

Workbooks("ファイル名.xlsx").Close SaveChanges:=True

このコードでは、「サンプル.xlsx」というワークブックを保存して閉じることができます。

警告メッセージの抑制と復元

ワークブックを閉じる際に表示される警告メッセージを無視したい場合は、Application.DisplayAlerts = Falseを使用します。

しかし、処理が終わった後に必ず元に戻す必要があります。 (Application.DisplayAlerts = True)
戻し忘れると、他の操作でも重要なメッセージが表示されなくなり、問題を引き起こすことがあります。

Sub 警告を抑制して閉じる()
    Application.DisplayAlerts = False
    Workbooks("ファイル名.xlsx").Close SaveChanges:=False
    Application.DisplayAlerts = True
End Sub

パスワード保護ファイルの適切な処理

パスワード保護されたワークブックを閉じる際に適切な処理が行われないと、エラーが発生することがあります。

パスワードが必要なワークブックを保存して閉じる場合は、事前にパスワードを指定して操作することが重要です。

以下のコードでは、パスワード保護されたワークブックを開き、変更を保存して閉じる方法を紹介します。

Sub パスワード保護ファイルを保存して閉じる()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\パス\パスワード保護ファイル.xlsx", Password:="yourpassword") '// パスワードを指定してファイルを開く
    
    '// ここで必要な操作を実行
    
    wb.Close SaveChanges:=True '// 変更を保存してファイルを閉じる
End Sub
スポンサーリンク

VBAの「Workbooks.Close」の使用例をご紹介

ここからは、「Workbooks.Closeメソッド」の使用例を紹介します。
どれも実際に動作するコードなので、ぜひ実行してみてください。

VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

使用例1: Workbooks.Closeメソッドを使用して、ワークブックを閉じる

Workbooks.Openメソッドを使用して、ワークブックを閉じる方法を紹介します。

特に引数を指定しない場合は、変更がある場合に確認ダイアログが表示されます。

コード例 | Workbooks.Closeメソッドを使用して、ワークブックを閉じる

Sub 基本的なファイルの閉じ方()
    Workbooks("ファイル名.xlsx").Close
End Sub

コードの動作概要

STEP
サブルーチンの定義

新しいサブルーチン(プロシージャ)「基本的なファイルの閉じ方」を定義します。

STEP
ファイルを閉じる

Workbooks.Closeメソッドを使用して、指定されたエクセルファイルを閉じます。

STEP
プログラムの終了

ファイルが正常に閉じられた後、サブルーチンが終了し、次の処理に進みます。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 基本的なファイルの閉じ方()
    • この行では、「Subステートメント」を使用して新しいサブルーチン「基本的なファイルの閉じ方」を定義しています。
      このサブルーチンは、指定されたファイルを閉じる処理を実行するために作成されています。
      サブルーチンは、処理をまとめて呼び出せる便利な小プログラムです。
  2. Workbooks(“ファイル名.xlsx”).Close
    • この行は、エクセルファイル「ファイル名.xlsx」を閉じるためのコマンドです
      Workbooks(“ファイル名.xlsx”)は、現在開いている特定のエクセルファイルを指定しています。
      Closeメソッドを使用して、指定されたファイルを閉じます。
      引数を省略しているため、ファイルに変更がある場合は保存するかどうかの確認ダイアログが表示されます。
  3. End Sub
    • この行はサブルーチンの終了を示しています。
      すべての処理が完了した後、サブルーチンは終了し、プログラムは次のステップに進みます。

このコードは、指定されたワークブックを閉じるための最もシンプルな方法です。
Workbooks.Closeメソッドを使用することで、ワークブックをプログラム内で自動的に閉じることができます。
引数を指定しない場合、ファイルに変更がある際にユーザーに確認するダイアログが表示されるため、誤って未保存のデータを失うことを防ぎます。
この基本的な機能は、エクセルの自動化処理において頻繁に利用されるため、非常に重要です。

使用例2: 保存をせずワークブックを閉じる方法

保存をせずにワークブックを閉じる方法を紹介します。

引数に、SaveChanges:=Falseを指定することで、ワークブックを保存せずに閉じることができます。

コード例 | 保存をせずワークブックを閉じる方法

Sub 保存せずにファイルを閉じる()
    Workbooks("ファイル名.xlsx").Close SaveChanges:=False
End Sub

コードの動作概要

STEP
サブルーチンの定義

新しいサブルーチン(プロシージャ)「保存せずにファイルを閉じる」を定義します。

STEP
保存せずにファイルを閉じる

Workbooks.Closeメソッドを使用して、指定されたエクセルファイルを「保存せずに」閉じます。
SaveChanges:=Falseという引数を指定することで、ファイルを保存せずに閉じる動作を指示します。

STEP
プログラムの終了

ファイルが正常に閉じられた後、サブルーチンが終了し、次の処理に進みます。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 保存せずにファイルを閉じる()
    • この行では、「Subステートメント」を使用して新しいサブルーチン「保存せずにファイルを閉じる」を定義しています。
      このサブルーチンは、指定されたファイルを保存せずに閉じる処理を実行します。
      サブルーチンは、処理をひとまとめにして呼び出すことができるプログラムの単位です。
  2. Workbooks(“ファイル名.xlsx”).Close SaveChanges:=False
    • この行では、「Workbooks.Closeメソッド」を使用して、指定されたエクセルファイル「ファイル名.xlsx」を閉じます
      「SaveChanges:=False」の引数を指定することで、ファイルに保存されていない変更があっても、それを無視してファイルを閉じるように指示しています。
      これにより、保存の確認メッセージが表示されることなく、ファイルが閉じられます。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  3. End Sub
    • この行はサブルーチンの終了を示しています。
      サブルーチンの処理が終了したら、プログラムは次の指示に従って進行します。

このコードは、ワークブックを保存せずに自動的に閉じるための手法を提供します。

SaveChanges:=Falseという引数を指定することで、変更を保存せずにワークブックを閉じることができます。
これにより、ユーザーの操作を待たずにワークブックを迅速に閉じることが可能です。

この機能は、テンポラリファイルや変更を加えたくない場合などに便利で、業務自動化やエクセルの操作効率を向上させる重要なテクニックです。

使用例3: 保存をしてワークブックを閉じる方法

保存をしてワークブックを閉じる方法を紹介します。

引数に、SaveChanges:=Trueを指定することで、ワークブックを保存して閉じることができます。

コード例 | 保存をしてワークブックを閉じる方法

Sub 保存してファイルを閉じる()
    Workbooks("ファイル名.xlsx").Close SaveChanges:=True
End Sub

コードの動作概要

STEP
サブルーチンの定義

新しいサブルーチン(プロシージャ)「保存してファイルを閉じる」を定義します。

STEP
保存してファイルを閉じる

Workbooks.Closeメソッドを使用して、指定されたエクセルファイルを「保存して」閉じます。
SaveChanges:=Trueという引数を指定することで、ファイルの変更内容が自動的に保存され、ファイルが閉じられます。

STEP
プログラムの終了

ファイルが保存されて閉じられた後、サブルーチンの処理が終了し、プログラムは次のステップに進みます。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 保存してファイルを閉じる()
    • この行では、Subステートメントを使用して新しいサブルーチン「保存してファイルを閉じる」を定義しています。
      このサブルーチンは、エクセルファイルを保存してから閉じる処理を実行します。
  2. Workbooks(“ファイル名.xlsx”).Close SaveChanges:=True
    • この行では、Workbooks.Closeメソッドを使用して、指定されたファイル「ファイル名.xlsx」を保存して閉じます
      「SaveChanges:=True」という引数を指定することで、ファイルに加えた変更を保存し、その後自動的にファイルを閉じます
      この操作により、ファイルがユーザーに何も確認せずに保存された状態で閉じられます。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  3. End Sub
    • この行はサブルーチンの終了を示しています。
      処理が完了したら、プログラムは次の指示に従って進行します。

このコードは、ワークブックを保存して閉じるための基本的な操作方法を提供します。

SaveChanges:=Trueという引数を使うことで、変更内容が自動的に保存され、確認メッセージを表示することなくワークブックを閉じることが可能です。

業務での定期的なデータ更新やマクロの実行後にデータを自動保存して処理を終了させるといった場面で非常に便利です。

使用例4: オブジェクト変数を使用して保存してワークブックを閉じる方法

オブジェクト変数を使用してワークブックを閉じる方法について紹介します。

下記コードは、始めにオブジェクト変数を使用しワークブックを開き、最後に保存を行いワークブックを閉じています。

コード例 |

Sub オブジェクト変数を使用して保存してファイルを閉じる()
    Dim Wb As Workbook
    Set Wb = Workbooks.Open("C:\パス\ファイル名.xlsx")
    
    '// Wbを使用して処理を実施
    
    Wb.Close SaveChanges:=True
End Sub

コードの動作概要

STEP
変数の宣言

Dim ステートメントを使って、Workbook 型のオブジェクト変数 Wb を宣言します。

STEP
ファイルを開く

Workbooks.Open メソッドを使用して、指定したファイル(ここでは “C:\パス\ファイル名.xlsx”)を開き、そのファイルをオブジェト変数 Wb に格納します。

STEP
処理の実行

ファイルが開かれた後、コメント部分に記載されている処理を実施する場所が確保されています。

STEP
ファイルを保存して閉じる

Wb.Close メソッドを使用して、ファイルを保存 (SaveChanges:=True) してから閉じます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub オブジェクト変数を使用して保存してファイルを閉じる()
    • この行では、Sub ステートメントを使用して新しいサブルーチン「オブジェクト変数を使用して保存してファイルを閉じる」を定義しています。
      このサブルーチンは、エクセルファイルを開き、処理を実行してから保存して閉じる一連の操作を行います。
  2. Dim Wb As Workbook
    • 「Dim ステートメント」を使用して、Workbook 型のオブジェクト変数「Wb」を宣言しています。
      オブジェクト変数「Wb」は、後で開くエクセルファイルを保持するための変数です。
      この変数を使うことで、開いたファイルに対して操作を行うことができます。
  3. Set Wb = Workbooks.Open(“C:\パス\ファイル名.xlsx”)
    • この行では、「Set ステートメント」を使用して、Workbooks.Open メソッドで開いたファイルをオブジェクト変数「Wb」に格納しています。
      Workbooks.Open(“C:\パス\ファイル名.xlsx”) で、指定されたファイルパスのエクセルファイルを開き、開かれたファイルをオブジェクト変数「Wb」に保存します。
      これにより、「Wb」を通じてファイルにアクセスでき、操作が可能になります。
  4. ‘// Wbを使用して処理を実施
    • この部分はコメントとして記述されており、開いたファイル Wb に対して実行する操作を追加する場所を示しています。
      例えば、セルへのデータ入力やシートのコピーなど、様々な処理をここに記述できます。
  5. Wb.Close SaveChanges:=True
    • この行では、「Wb.Close メソッド」を使用してファイルを保存して閉じます
      「SaveChanges:=True」という引数を指定することで、開いていたファイルの変更内容を保存し、その後閉じられます。
      これにより、ファイルが変更されていた場合でも、保存されてから閉じるため、データの損失を防ぎます。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  6. End Sub
    • この行はサブルーチンの終了を示しています。
      ここで処理がすべて完了し、プログラムは次のステップへ進みます。

このコードは、ワークブックを開き、処理を行い、保存して閉じる一連の操作を効率的に実行するための方法を示しています。

オブジェクト変数「Wb」を使用することで、ワークブックを開いてから様々な操作を行い、その後保存して閉じるという流れを整理して実装できます。

務での自動化やマクロ処理で広く利用される重要な手法です。

使用例5: オブジェクト変数を使用して、警告を消してワークブックを閉じる方法

保存時に警告を非表示にする方法を紹介します。

ワークブックを閉じる際に表示される警告を消すには、DisplayAlertsプロパティを使用します。

  • Application.DisplayAlerts を使用して警告を非表示にした場合は、処理の最後に再表示する設定を忘れないようにしましょう。

コード例 |

Sub オブジェクト変数を使用して警告を消してファイルを閉じる()
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)
    
    '// Wbを使用して処理を実施

    Application.DisplayAlerts = False
    Wb.Close SaveChanges:=False
    Application.DisplayAlerts = True
End Sub

コードの動作概要

STEP
ファイルパスの指定

Const ステートメントを使って、開くファイルのパスを定数 filePath に格納します。

STEP
変数の宣言

Dim ステートメントで Workbook 型のオブジェクト変数 Wb を宣言し、開いたファイルを格納する準備をします。

STEP
ファイルを開く

Set ステートメントで、指定されたファイルを開きます。

STEP
警告を無効化

警告メッセージを非表示にします。

STEP
保存せずにファイルを閉じる

Wb.Close SaveChanges:=False で、ファイルを保存せずに閉じます。

STEP
警告を再度有効化

Application.DisplayAlerts = True で、警告メッセージを再び有効にします。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub オブジェクト変数を使用して警告を消してファイルを閉じる()
    • この行で、新しいサブルーチン「オブジェクト変数を使用して警告を消してファイルを閉じる」を定義しています。
      サブルーチンは、指定されたエクセルファイルを開き、警告を無効化した状態で閉じる動作を行います。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • 「Const ステートメント」を使って定数「filePath」を定義し、開くべきファイルのパスを指定します。
      Const は定数として定義されるため、このパスはコード内で変更できません。
      定されたパスに基づいて、エクセルファイルが開かれます。
  3. Dim Wb As Workbook
    • 「Dim ステートメント」で Workbook 型のオブジェクト変数「Wb」を宣言しています。
      この変数は、後に開かれるエクセルファイルを保持するために使われます。
      Workbook 型の変数を使用することで、開いたファイルに対して様々な操作を行うことが可能です。
  4. Set Wb = Workbooks.Open(filePath)
    • 「Set ステートメント」を使用して、Workbooks.Open(filePath) で開かれたエクセルファイルをオブジェクト変数「Wb」に格納します。
      これにより、オブジェクト変数「Wb」を通じて、そのファイルに対して操作を行うことができます。
  5. ‘// Wbを使用して処理を実施
    • この部分はコメントとして記載されており、ファイルに対して操作を加える場所を示しています。
      たとえば、セルのデータを変更したり、シートを追加したりといった操作をここで行うことができます。
  6. Application.DisplayAlerts = False
    • この行では、「Application.DisplayAlerts プロパティ」を「False」に設定し、エクセルからの警告メッセージを非表示にしています。
      これにより、ファイルを閉じる際に表示される警告ダイアログが抑制されます。
      例えば、保存せずに閉じる場合やその他の警告を非表示にしたい時に使用します。
  7. Wb.Close SaveChanges:=False
    • 「Wb.Close メソッド」を使用して、開いたファイルを閉じます
      この際、「SaveChanges:=False」 を指定することで、変更を保存せずにファイルを閉じます
      保存しない場合でも、警告は非表示にされているため、警告ダイアログは表示されません。
      また、「:= 」の記号は、引数に特定の値を指定するために使われます
  8. Application.DisplayAlerts = True
    • この行では、再び「Application.DisplayAlerts プロパティ」を「True」に設定して、警告メッセージの表示を有効に戻しています
      プログラム終了後に通常通り警告メッセージが表示されるようにするため、この設定は忘れないようにする必要があります
  9. End Sub
    • この行でサブルーチンが終了します。
      Sub で開始した処理が End Sub で終了し、プログラムは次のステップへ進みます。

このコードは、ワークブックを開き、警告メッセージを無効化した状態でワークブックを保存せずに閉じるプロセスを示しています。

Application.DisplayAlerts = False と True の切り替えにより、不要な警告ダイアログを抑制しつつ、処理の流れを円滑に進めることができます

ワークブックを操作する際に煩雑な警告を無効にしたい場合や、自動化処理をスムーズに進めるために非常に有用です。

スポンサーリンク

この記事のまとめ

エクセルVBAでの「Workbooks.Closeメソッド」を活用することで、ワークブックを効率的に閉じる方法を学びました。
これにより、作業の自動化が一層進みます。

再度ポイントのおさらいを行いましょう。

ポイントのおさらい

  • Workbooks.Closeメソッドの基本的な使い方を理解する
    • 「Workbooks.Closeメソッド」を使用することで、VBAコードから直接Excelワークブックを閉じることができます。
      ワークブックを閉じる際には、保存するかどうか、またはエラーを防ぐための適切な設定を行うことが重要です。

      ⇒ 「Workbooks.Closeメソッドの基本」をもう一度見る。
  • Workbooks.Closeメソッドでワークブックを閉じる際の注意ポイント
  • 保存の有無を指定してワークブックを閉じる
  • VBAで警告メッセージを無効化する方法
  • 使用例を通じて、実践的なファイル操作方法を学ぶ
    • 使用例を通じて、ワークブックを閉じるための様々な方法を学びました。
      保存せずに閉じる方法、オブジェクト変数を用いた操作、さらには警告を無視して閉じる方法など、実務に役立つテクニックが満載です。

      ⇒ 「Workbooks.Closeメソッドの使用例」もう一度見る。

基本的なワークブックの閉じ方から、保存設定の方法、警告を無視して閉じるテクニックまで、業務の効率化に活かせる多様な方法を学びました。

この記事の使用例を繰り返し実践することで、よりスムーズにVBAを活用したファイル操作ができるようになります。

この記事の内容を参考にし、次のステップとして配列操作をもっと深く掘り下げ、業務の効率化を進めていきましょう。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「JavaScr...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次