回答編集履歴

2

追記

2018/06/30 16:14

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -25,3 +25,89 @@
25
25
 
26
26
 
27
27
  一回、Closeすれば十分でしょう。閉じてすでに存在してないものをさらに閉じようとすればエラーになるのは当然のことだと。
28
+
29
+
30
+
31
+ 追記
32
+
33
+ ---
34
+
35
+ サンプルを作成して実験してみました。
36
+
37
+
38
+
39
+ Excel の標準モジュール
40
+
41
+ ```vba
42
+
43
+ Public Sub シミュ_Macro()
44
+
45
+ MsgBox "シミュ_Macro実行!"
46
+
47
+ ThisWorkbook.Close SaveChanges:=False
48
+
49
+ End Sub
50
+
51
+ ```
52
+
53
+ Accessの標準モジュール
54
+
55
+ ```
56
+
57
+ Public Sub ZZZZZZ()
58
+
59
+ Dim EE As Object, wb As Object
60
+
61
+
62
+
63
+ Set EE = CreateObject("Excel.Application")
64
+
65
+ '本番はfalse
66
+
67
+ EE.Visible = True
68
+
69
+ EE.UserControl = False
70
+
71
+
72
+
73
+ Set wb = EE.Workbooks.Open("C:\TEST\MacroTest.xlsm")
74
+
75
+ EE.Run "シミュ_Macro"
76
+
77
+
78
+
79
+ wb.Close
80
+
81
+ EE.Quit
82
+
83
+ Set wb = Nothing
84
+
85
+ Set EE = Nothing
86
+
87
+ MsgBox "END"
88
+
89
+ End Sub
90
+
91
+ ```
92
+
93
+
94
+
95
+ これを実行すると、`EE.Run "シミュ_Macro"`で、
96
+
97
+ ```text
98
+
99
+ 実行時エラー'440':
100
+
101
+ オートメーションエラーです。
102
+
103
+ ```
104
+
105
+ とエラーがでます。
106
+
107
+ オープンしたwbが `シミュ_Macro` 内でCloseされて参照できなくなったからだと思われます。
108
+
109
+
110
+
111
+ `シミュ_Macro`内の`ThisWorkbook.Close SaveChanges:=False`をコメントアウトして実行したら、
112
+
113
+ エラーなく最後まで実行され、"END" とメッセージが表示されました。

1

追記

2018/06/30 16:14

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -17,3 +17,11 @@
17
17
 
18
18
 
19
19
  どちらかの Close を削除すればいいのでは。
20
+
21
+
22
+
23
+ > ネットなどで調べてみると、そのあとのCloseとQuitがないとExcelファイルが占有状態になると記載があったのですが。。。
24
+
25
+
26
+
27
+ 一回、Closeすれば十分でしょう。閉じてすでに存在してないものをさらに閉じようとすればエラーになるのは当然のことだと。