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

回答編集履歴

2

追記

2018/06/30 16:14

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -11,4 +11,47 @@
11
11
 
12
12
  > ネットなどで調べてみると、そのあとのCloseとQuitがないとExcelファイルが占有状態になると記載があったのですが。。。
13
13
 
14
- 一回、Closeすれば十分でしょう。閉じてすでに存在してないものをさらに閉じようとすればエラーになるのは当然のことだと。
14
+ 一回、Closeすれば十分でしょう。閉じてすでに存在してないものをさらに閉じようとすればエラーになるのは当然のことだと。
15
+
16
+ 追記
17
+ ---
18
+ サンプルを作成して実験してみました。
19
+
20
+ Excel の標準モジュール
21
+ ```vba
22
+ Public Sub シミュ_Macro()
23
+ MsgBox "シミュ_Macro実行!"
24
+ ThisWorkbook.Close SaveChanges:=False
25
+ End Sub
26
+ ```
27
+ Accessの標準モジュール
28
+ ```
29
+ Public Sub ZZZZZZ()
30
+ Dim EE As Object, wb As Object
31
+
32
+ Set EE = CreateObject("Excel.Application")
33
+ '本番はfalse
34
+ EE.Visible = True
35
+ EE.UserControl = False
36
+
37
+ Set wb = EE.Workbooks.Open("C:\TEST\MacroTest.xlsm")
38
+ EE.Run "シミュ_Macro"
39
+
40
+ wb.Close
41
+ EE.Quit
42
+ Set wb = Nothing
43
+ Set EE = Nothing
44
+ MsgBox "END"
45
+ End Sub
46
+ ```
47
+
48
+ これを実行すると、`EE.Run "シミュ_Macro"`で、
49
+ ```text
50
+ 実行時エラー'440':
51
+ オートメーションエラーです。
52
+ ```
53
+ とエラーがでます。
54
+ オープンしたwbが `シミュ_Macro` 内でCloseされて参照できなくなったからだと思われます。
55
+
56
+ `シミュ_Macro`内の`ThisWorkbook.Close SaveChanges:=False`をコメントアウトして実行したら、
57
+ エラーなく最後まで実行され、"END" とメッセージが表示されました。

1

追記

2018/06/30 16:14

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -7,4 +7,8 @@
7
7
  ともう一度閉じようとしているのでエラーになっているように
8
8
  思えます。
9
9
 
10
- どちらかの Close を削除すればいいのでは。
10
+ どちらかの Close を削除すればいいのでは。
11
+
12
+ > ネットなどで調べてみると、そのあとのCloseとQuitがないとExcelファイルが占有状態になると記載があったのですが。。。
13
+
14
+ 一回、Closeすれば十分でしょう。閉じてすでに存在してないものをさらに閉じようとすればエラーになるのは当然のことだと。