【ExcelVBA入門】ワークブックを閉じる方法を徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでブックを閉じる方法を知っていますか?

ブックを上書き保存した後や、新しくブックを作って保存した後など、ブックを閉じるケースはよくあります。

そこで今回は、

  • Closeステートメントでブックを閉じる方法
  • ブック名を指定して閉じる方法
  • 上書き保存後に閉じる方法
  • 名前を付けて保存後に閉じる方法

といった基礎的なことから、応用的な方法まで、徹底的に解説します!

Closeステートメントでブックを閉じる方法

はじめに、Closeステートメントを使ったブックを閉じる方法について解説します。

Closeステートメントを使って次のように書くことで、簡単にブックを閉じることができます。

Closeステートメントの使い方:

Workbook.Close

ただ、1点注意点として、ブックを閉じるときに次のような警告メッセージが表示されることがあります。

ブックを閉じる処理が途中で止まってしまうため、以下のようにDisplayAlertsプロパティを使ってメッセージを非表示にする処理を入れるのがおすすめです!

Application.DisplayAlerts = False 'メッセージを非表示設定に変更
Workbook.Close
Application.DisplayAlerts = True  'メッセージを表示設定に変更

ブックを閉じるサンプル

次に、サンプルコードをもとに、具体的な使い方を解説します。

ブック名を指定して閉じる

まずは、ブック名を指定して閉じる方法です。

Openステートメントでブックを開き、開いたブックを閉じるサンプルコードを用意しました。

サンプルコード:

Sub Test1()
  'Test.xlsxを開く
  Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"
  
  '開いたブックA1セルのデータを出力
  Debug.Print Workbooks("Test.xlsx").Worksheets(1).Range("A1").Value
    
  'ブックを閉じる
  Application.DisplayAlerts = False 'メッセージを非表示に設定
  Workbooks("Test.xlsx").Close
  Application.DisplayAlerts = True  'メッセージを非表示に設定
End Sub

実行結果:

【Test.xlsx】の【A1セル】に書き込んだデータ

Closeステートメントの前にWorkbooks(ブック名)を指定することで、指定したブックを閉じています。

このように、簡単に指定したブックを閉じることができます。

アクティブワークブックを閉じる

次に、アクティブワークブックを閉じる方法について解説します。

アクティブワークブックとは、選択しているブックのことです。

複数のブックを使って処理を書く場合に、選択しているブックに対して操作をするケースはよくあるため、合わせて覚えておくと便利です。

今回は、Openステートメントで新しくブックを開いたあと、アクティブになったブックを閉じるサンプルコードを用意しました。

サンプルコード:

Sub Test2()
  'Test.xlsxを開く
  Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"
  
  '開いたブックA1セルのデータを出力
  Debug.Print ActiveWorkbook.Worksheets(1).Range("A1").Value
    
  'ブックを閉じる
  Application.DisplayAlerts = False 'メッセージを非表示に設定
  ActiveWorkbook.Close
  Application.DisplayAlerts = True  'メッセージを非表示に設定
End Sub

実行結果:

【Test.xlsx】の【A1セル】に書き込んだデータ

Closeステートメントの前にActiveWorkBookを指定することで、アクティブワークブックを閉じています。

このように簡単に指アクティブワークブックを閉じることができます。

ちなみに、アクティブワークブックの操作については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】ActiveWorkBookの使い方!ThisWorkBookとの違いも解説!
更新日 : 2019年5月2日

マクロ実行ブックを閉じる

次に、マクロ実行ブックを閉じる方法について解説します。

※最初に注意点ですが、「Application.DisplayAlerts = False」で警告メッセージを表示せずにそのまま閉じる処理のため、事前に必ずファイルを保存してから以下コードを実行してください。

サンプルコード:

Sub Test3()
  'ブックを閉じる
  Application.DisplayAlerts = False 'メッセージを非表示に設定
  ThisWorkbook.Close
End Sub

Closeステートメントの前にThisWorkBookを指定することで、マクロを実行しているブックを閉じています。

ActiveWorkbookで選択しているブック、ThisWorkBookでマクロを実行しているブックを指定できることさえ覚えておけば、使い方は同じなので覚えておくと便利です!

上書き保存後に閉じる

次に、上書き保存後に閉じる方法について解説します。

書き換えたデータを保存してそのまま閉じる方法です。

サンプル実行前のTest.xlsxのデータ:

サンプルコード:

Sub Test4()
  'Test.xlsxを開く
  Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"
  
  '開いたブックのA2セルにデータ書き込み
  ActiveWorkbook.Worksheets(1).Range("A2").Value = "新しく追加したデータ"
    
  '上書き保存してからブックを閉じる
  Application.DisplayAlerts = False 'メッセージを非表示に設定
  ActiveWorkbook.Close True
  Application.DisplayAlerts = True  'メッセージを非表示に設定
End Sub

サンプル実行後のTest.xlsxのデータ::

A2セルに「新しく追加したデータ」を書き込んでから、上書き保存して閉じるサンプルです。

ActiveWorkbook.Close True」のように、Closeステートメントに続けてTrueを書くことで保存してから閉じることができます。

名前を付けて保存後に閉じる

次に、名前を付けて保存後に閉じる方法について解説します。

サンプル実行前のフォルダ:

サンプルコード:

Sub Test5()
  'Test.xzlsxを開く
  Workbooks.Open ThisWorkbook.Path & "\Test.xlsx"
  
  '別名で保存してからブックを閉じる
  Application.DisplayAlerts = False 'メッセージを非表示に設定
  ActiveWorkbook.Close True, ThisWorkbook.Path & "\名前を付けて保存.xlsx"
  Application.DisplayAlerts = True  'メッセージを非表示に設定
End Sub

サンプル実行後のフォルダ:

ActiveWorkbook.Close True, ファイルパス」を指定することで名前を付けて保存してから、ブックを閉じています。

今回は、「ThisWorkbook.Path & "\名前を付けて保存.xlsx"」を指定することで、マクロを実行しているブックのフォルダに「名前を付けて保存.xlsx」の名前でブックを保存しています。

このように、簡単に名前を付けて保存後にブックを閉じることができます。

ブックを閉じずに保存だけする方法

ここまでブックを閉じる方法・保存してから閉じる方法について解説してきましたが、ブックを閉じずに保存だけしたいときもありますよね。

Saveメソッドでブックを上書き保存、SaveAsメソッドで名前を付けて保存することができるので、合わせて覚えておくと便利です!

Saveメソッド・SaveAsメソッドの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!


【ExcelVBA入門】SaveAsメソッドを使ったファイル保存方法を徹底解説!
更新日 : 2019年4月2日

合わせて覚えると便利なブック操作方法

ここまでブックを閉じる方法をメインに解説してきました。

ただ、ブックを閉じる処理以外にもブック操作で覚えておくと便利なメソッド・プロパティはたくさんあります。

ブックの作成、保存、データ取得、データコピーなどまとめて以下で解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】ワークブック操作する方法について徹底解説!
更新日 : 2019年8月28日

まとめ

今回は、ブックを閉じるためのCloseステートメントの使い方について解説しました。

データを計算して保存した後、ブックを閉じたいケースはよくあります。

Closeステートメントは使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説