Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
上書きして終了時にエクセルも終了させたい
投稿日時: 17/06/15 07:53:07
投稿者: hisayanxp

(A)ではExcelが終了しないので(B)で実行すると「インデックスが有効範囲にありません」と(B)の記述のどこに問題があるのでしょうか?
よろしくお願いします。
(A)
Sub sample1()
    Application.DisplayAlerts = False
    Workbooks("Book1.xlsm").Close SaveChanges:=True
    Application.DisplayAlerts = True
End Sub
 
(B)
Sub sample2()
    Application.DisplayAlerts = False
    Application.Quit
    Workbooks("Book1.xlsx").Close SaveChanges:=True
    Application.DisplayAlerts = True
End Sub
 

回答
投稿日時: 17/06/15 15:40:18
投稿者: Suzu

こんにちは。
 

hisayanxp さんの引用:
(B)の記述のどこに問題があるのでしょうか?

 
コードの違いを確認します。
 
Application.DisplayAlerts の True/False は一緒です。
違いとして検証する必要があるのは
 
 
引用:
(A)
    Workbooks("Book1.xlsm").Close SaveChanges:=True
 
(B)
    Application.Quit
    Workbooks("Book1.xlsx").Close SaveChanges:=True

 
それぞれ、どんな動作をさせようとしていますでしょうか。
また、それを手動で行った時に、B に 問題は発生しませんか?

回答
投稿日時: 17/06/15 16:33:00
投稿者: mattuwan44

> Workbooks("Book1.xlsm").Close SaveChanges:=True
> Workbooks("Book1.xlsx").Close SaveChanges:=True
ファイル名の内、拡張子が違います。
 
>インデックスが有効範囲にありません
今回の場合、
「エクセルで開かれているファイルの中にそんな名前のファイル
(=エクセルから見たらブック)はありません。」
という意味です。

回答
投稿日時: 17/06/15 16:53:07
投稿者: mattuwan44

>上書きして終了時にエクセルも終了させたい
 
ちなみに、
上書き保存をしたいファイルはエクセルを終了させるマクロのあるブックですか?
また、他にもブックを開いていた場合はどうするのですか?
 

投稿日時: 17/06/16 06:55:34
投稿者: hisayanxp

suzuさん、mattuwan44さん  ありがとうございました。
 
susuさんへ
 →B に 問題が発生しました。不注意なミスでした。
 またこの記述ではどちらにしろ上書きして終了するのですから、DisplayAlertsは不要と考えていいですよね。
 
mattuwan44さん  
 
上書き保存をしたいファイルはエクセルを終了させるマクロのあるブックですか?→そうです
また、他にもブックを開いていた場合はどうするのですか? →まったく考えていませんでした。やってみたら当然のことながら他のブックも閉じてしまいました。これは単独のブックを開いている時でないと使えないということですね。

投稿日時: 17/06/16 07:55:23
投稿者: hisayanxp

suzuさん、mattuwan44 さん
次のようにすれば良いということがわかりました。
Application.Quitも奥が深いんだなと思いました。
 
Sub sample3()
    Application.Quit
    Workbooks("Book1.xlsm").Close SaveChanges:=True
    If Workbooks.Count <= 1 Then Application.Quit
End Sub

回答
投稿日時: 17/06/16 09:31:30
投稿者: Suzu

Quitメソッドについての検証記事です。
 
【Application.Quitの誤解】:Excelでお仕事
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_800_060.html

投稿日時: 17/06/16 15:05:44
投稿者: hisayanxp

suzuさん
ありがとうございました。詳しく書かれていて大いに参考になりました。