エクセルVBAでファイルを閉じる方法 | Workbooks.Closeメソッドの使い方

workbooks.closeについて VBA

おつかれさまです!

エクセルVBAでファイルを閉じる方法が分からず、悩んだことはありませんか?

お悩みポイント
悩む人
  • VBAで特定のファイルを閉じたい。
  • ファイルを閉じる際に保存するかどうかを指定したい。

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

基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。

使用例はすべてコピペするだけで実際に使用できるようにしていますので、初心者でもすぐに実践可能です。
気になる部分だけでもぜひご覧いただければと思います。

ぜひ最後までお読みください。


【 この記事の概要 】

  よく使う度    4.0  
  難しさ     2.0  
  覚えておくと安心度    4.0  

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

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

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

ファイルの閉じ方の違い

エクセルVBAでファイルを保存するには、次のように3つの方法があります。

メソッド名説明特徴
Close
メソッド
開いているファイルを
閉じるために使用
します。
変更を保存するかどうかを指定でき、
変更がある場合は確認ダイアログが
表示されます

ファイルを閉じることができます。
Save
メソッド
開いているファイルを
上書き保存するために
使用します。
変更内容をそのまま元のファイルに
保存します。
ファイルを閉じることはできません。
SaveAs
メソッド
開いているファイルを
新しい名前または場所に
保存するために使用します。
変更内容を別のファイルとして保存します。
ファイル形式や名前を指定できます。
ファイルを閉じることはできません。

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

Workbooks.Closeメソッドの基本

まずは、VBAでファイルを閉じる基本的な方法について説明します。

Workbooks.Closeメソッドとは?

Workbooks.Closeメソッドは、開いているエクセルファイルを閉じるために使用するVBAのメソッドです。

このメソッドを使用することで、VBAコードから直接エクセルファイルを保存・閉じることができます。

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

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

Workbooks.closeの構成について

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

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

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

Workbooks.Openメソッドを使う際の注意ポイント

  1. ファイル名やパスの正確さ
    • ファイルを閉じる際には、正しいファイル名やパスを指定することが重要です。
      間違った名前やパスを使用するとエラーが発生し、ファイルを正しく閉じることができません。ファイル名やパスの指定は正確に行いましょう。
  2. ファイルの状態を事前に確認する
    • ファイルが既に閉じられている場合に再度閉じようとすると、エラーが発生することがあります
      処理を実行する前に、対象のファイルがまだ開いているかを確認するコードを追加することで、エラーを防ぐことが可能です。
  3. 保存設定の慎重な選択
    • Workbooks.Closeメソッドを使ってファイルを閉じる際には、保存するかどうかを慎重に決定する必要があります。
      変更を保存したくない場合はSaveChanges:=Falseを、
      保存する場合はSaveChanges:=Trueを指定しましょう。
      誤った設定をすると、予期しない変更が失われたり、不要な保存が行われたりする可能性があります。
  4. 警告メッセージの抑制と復元
    • ファイルを閉じる際に表示される警告メッセージを無視したい場合は、Application.DisplayAlerts = Falseを使用します。
      しかし、処理が終了したら必ずApplication.DisplayAlerts = Trueに戻してください
      そうしないと、他の操作でも重要な警告が表示されなくなり、問題が発生する可能性があります。
  5. パスワード保護ファイルの適切な処理
    • パスワード保護されたファイルを閉じる際に適切な処理が行われないと、エラーが発生することがあります。
      事前にファイルがパスワードで保護されているかどうかを確認しておくことがトラブルを防ぐポイントです。

Workbooks.Closeメソッドの使用例

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

使用例1: Workbooks.Closeメソッドを使用して、ファイルを閉じる

Workbooks.Openメソッドを使用して、ファイルを閉じる方法を紹介します。

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

Sub 基本的なファイルの閉じ方()
    Workbooks("ファイル名.xlsx").Close
End Sub
動作概要
  • STEP1
    サブルーチンの定義

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

  • STEP2
    ファイルを閉じる

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

  • STEP3
    プログラムの終了

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

詳細解説

コードの詳細
  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
動作概要
  • STEP1
    サブルーチンの定義

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

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

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

  • STEP3
    プログラムの終了

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

コードの詳細
  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
動作概要
  • STEP1
    サブルーチンの定義

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

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

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

  • STEP3
    プログラムの終了

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

詳細解説

コードの詳細
  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
動作概要
  • STEP1
    変数の宣言

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

  • STEP2
    ファイルを開く

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

  • STEP3
    処理の実行

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

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

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

詳細解説

コードの詳細
  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
動作概要
  • STEP1
    ファイルパスの指定

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

  • STEP2
    変数の宣言

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

  • STEP3
    ファイルを開く

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

  • STEP4
    警告を無効化

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

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

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

  • STEP6
    警告を再度有効化

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

詳細解説

コードの詳細
  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メソッドを使う際の注意ポイント
  • 使用例を通じて、実践的なファイル操作方法を学ぶ
    • 使用例を通じて、ファイルを閉じるための様々な方法を学びました。
      保存せずに閉じる方法、オブジェクト変数を用いた操作、さらには警告を無視して閉じる方法など、実務に役立つテクニックが満載です。

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

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

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

タイトルとURLをコピーしました