【マクロ】保存しないでbookを閉じる

book間

マクロで保存しないでbookを閉じる方法について紹介します

この記事で理解できること↓

  • bookを保存せずに閉じる方法(Close False・Application.DisplayAlert)
  • おすすめはApplication.DisplayAlert

マクロで指定のbookを閉じることができるのを知っていますか?

閉じる機能を使用する場面は、他bookから欲しいデータを取得するため、開いて→コピペ→閉じるの場面で使用する機会が多いです

ここで問題なのは、bookを閉じると「保存しますか?」という表示がでますよね?

これではマクロを止めてしまいます

そこで、データを取得したら保存せずに閉じるマクロがあるので、マクロを止めずにスムーズに行うことができます

閉じるマクロ「Close False」「Application.DisplayAlerts」を記事で紹介していきます

ソースコードが見たい・欲しい方は目次で飛んでください

保存しないでbookを閉じるまでの流れ

  1. マクロbookと閉じるbookを変数にいれる
  2. 閉じるbookに「Close」を使ってとじる(2種類のパターンあり)

変数にマクロのbookと閉じるbookを入れる

マクロのbookと閉じるbookを変数に入れます

変数とはデータを入れる「箱」をイメージしてください

その変数という箱に数値や文字などを入れて使用していきます

今回はマクロを組み込んでいるbookと閉じるbookをを入れていきます

最初はマクロbookを変数に設定します

Sub VBA()
'bookを変数にする//////////////////////////////////////
Dim wb_このマクロbook 

Set wb_このマクロbook = ThisWorkbook

3行目: Dim wb_このマクロファイル

「Dim」と書くと、これから変数を決めるよという意味になります

スペースを入れ好きな変数名を入れます

形式: Dim 変数名

5行目: Set wb_このマクロbook = ThisWorkbook

作った変数にマクロbook(ファイル)を入れます

「ThisWorkbook」とはマクロbook(ファイル)のことを指してます

※マクロbook(ファイル)のコードエディター(VBE)にThisWorkbookと記述しているので記述しているこのbookという意味になる

ここで注意ですが、ファイルなどを変数にいれるときは必ず先に「Set」を書きます

「Set」を書かないとエラーが起こりますので注意です

しかし、数字や文字を設定するときは「Set」を入れる必要がありません

「Set」を付けるか付けないかわからないときは、とりあえず書いてコードを実行させて

エラーが出たら「Set」を書けば大丈夫です

そのうちどれが必要でどれが必要でないかわかってきます

同じように閉じるbookも変数に入れます

Dim wb_閉じるbook  '「Dim」はDimに続く、文字を変数にするって意味、「wb_閉じるbook」という変数を作成、まだ中身はありません

Set wb_閉じるbook = Workbooks("ファイル名.拡張子")  '「wb_閉じるbook」名の変数に、閉じるbookを入れます

3行目: 閉じるbookのファイル名.拡張子は、実際に閉じるbookのファイル名.拡張子を入れてください

保存せずに閉じる(Close False)

1つ目は(Close False)を使った閉じ方です

使い方は

Workbooks(“ファイル名.拡張子”).Close False

閉じるブックを指定し、「.Close False」を付ける形です

今回だと閉じるブックは変数に入れているのでこんな感じになります

wb_閉じるbook.Close False 

これでbookを保存せずに、閉じることができます

保存せずに閉じる(Application.DisplayAlerts)★おすすめ

2つ目Application.DisplayAlertsを使った閉じ方です

「DisplayAlerts」とは保存せずにbookを閉じようとすると、「保存しますか」と表示がでますよね?

あれです

「DisplayAlerts」の設定を変更することで、表示を切ってマクロを止めずに最後まで動かすことができます

ではなぜこっちがおすすめなのかというと、閉じるマクロを使うときってコピペとかする時が多いと思います

コピーをするとコピーした範囲にしましまがでませんか?

コピー範囲を説明する画像

この状態で「Close False」だけを使用すると、「保存しますか?」とはでませんが、上記のような表示が出てマクロを止めてしまいます

DisplayAlertsはこういうポップの表示の操作を設定できるので、設定を切ればすべてのポップの表示を切ることができます

DisplayAlertsを使うとこんな感じになります

'bookを閉じる/////////////////////////////////////////////////

Application.DisplayAlerts = False 'アラートの設定を切る

wb_閉じるbook.Close 'bookを閉じる

Application.DisplayAlerts = True 'アラートの設定する

3行目:  Application.DisplayAlerts = False

まず「Application」ですが「DisplayAlerts」を呼び出すために使います

「Application」と「DisplayAlerts」はセットなので覚えてしまいましょ

スペルが覚えられないという方は補完機能を使いましょう

「a」と入れた後に「Ctrl+Space」を押して「p」を入れれば候補が出ますので、選択してください

「DisplayAlerts」でも同じで、補完機能で「Application」の後に「.」ドットを入れると候補が出ますので「di」と入れれば候補が出ます

補完機能の説明画像

「DisplayAlerts」の後には「=」を付ける必要があります

これだけは補完機能で出ないので覚えるしかありません

しかし、「=」を使うと補完機能がまた発動します

補完機能の説明画像

「False」と「True」の選択肢がでますので、「False」にして設定を切ってください


5行目: wb_閉じるbook.Close

閉じたいbookを閉じます



7行目: Application.DisplayAlerts = True

ここでまた「DisplayAlerts」の設定をオンにします

ソースコード

Close False

Sub VBA()

'bookを変数にする//////////////////////////////////////

Dim wb_このマクロbook '「Dim」はDimに続く、文字を変数にするって意味、「wb_このマクロbook」という変数を作成、まだ中身はありません

Set wb_このマクロbook = ThisWorkbook '「wb_このマクロbook」名の変数に、このマクロbookを入れます

Dim wb_閉じるbook  '「Dim」はDimに続く、文字を変数にするって意味、「wb_閉じるbook」という変数を作成、まだ中身はありません

Set wb_閉じるbook = Workbooks("出荷一覧表.csv")  '「wb_閉じるbook」名の変数に、閉じるbookを入れます

'bookを閉じる/////////////////////////////////////////////////

wb_閉じるbook.Close False ’ bookを保存せずに閉じる


End Sub

Application.DisplayAlerts

Sub VBA()

'bookを変数にする//////////////////////////////////////

Dim wb_このマクロbook '「Dim」はDimに続く、文字を変数にするって意味、「wb_このマクロbook」という変数を作成、まだ中身はありません

Set wb_このマクロbook = ThisWorkbook '「wb_このマクロbook」名の変数に、このマクロbookを入れます

Dim wb_閉じるbook  '「Dim」はDimに続く、文字を変数にするって意味、「wb_閉じるbook」という変数を作成、まだ中身はありません

Set wb_閉じるbook = Workbooks("出荷一覧表.csv")  '「wb_閉じるbook」名の変数に、閉じるbookを入れます

'bookを閉じる/////////////////////////////////////////////////

Application.DisplayAlerts = False 'アラートの設定を切る

wb_閉じるbook.Close 'bookを閉じる

Application.DisplayAlerts = True 'アラートの設定する


End Sub

11行目: 閉じるbook名.拡張子は、実際に閉じたいbook名.拡張子を入れてください

コメント

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