teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2019/06/02 19:20

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,6 +1,8 @@
1
1
  > 質問1
2
2
 
3
- 提示のコードに、エクセルApplcationの終了を追加するなら、下記のコードになりますね。
3
+ 提示のコードに、エクセルApplcationの終了を追加するなら、~~下記のコードになりますね~~
4
+ **追記:** 試してみたら、`Set App = .Applcation`でエラーになりました。
5
+ Withを使わず変数宣言して `Set wb = Workbooks.Open(str1)` で開いて `wb.Application.Quit` で終了させたらエラーはなくなりましたが、タスクマネージャで確認したら、エクセルApplcation は残ってました。下記の`Test3`以降のコードの場合は、エクセルApplcationはきれいに消えました。
4
6
 
5
7
  ```vba
6
8
  Sub Test2()

1

書式の改善

2019/06/02 19:20

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -31,12 +31,11 @@
31
31
 
32
32
  End Sub
33
33
  ```
34
+ 下記の点を理解してください。
35
+ - 参照設定してあると、Workbooks.Open すると裏でエクセルApplcationが自動生成される。
36
+ - Workbooks.Open はWorkbookオブジェクトを返す。
37
+ - Workbookの親のエクセルApplcationは、Workbookオブジェクトの Applicationプロパティで取得できる。
34
38
 
35
- 参照設定してあると、Workbooks.Open すると裏でエクセルApplcationが自動生成される。
36
- Workbooks.Open はWorkbookオブジェクトを返す。
37
- Workbookの親のエクセルApplcationは、Workbookオブジェクトの Applicationプロパティで取得できる。
38
-
39
-
40
39
  ただ、参照設定をしてあるなら、下記のコードが素直で読みやすいコードだと思います。
41
40
  (ちなみに、私は、変数宣言は使う前にする派です。)
42
41
 
@@ -92,5 +91,5 @@
92
91
 
93
92
  上のコードを見ればわかると思いますが、
94
93
  Excel.Application を生成したら、自動で破棄してくれませんので、
95
- Quit は必須ですね。
94
+ **Quit は必須**ですね。
96
95
  裏で自動で生成されたとしても。