回答編集履歴

2

呼び出される方を修正しない場合

2021/04/19 01:39

投稿

xail2222
xail2222

スコア1497

test CHANGED
@@ -35,3 +35,69 @@
35
35
  subbook.Close SaveChanges:=True
36
36
 
37
37
  ```
38
+
39
+
40
+
41
+
42
+
43
+ 呼び出される側を修正したくない場合、以下になります
44
+
45
+ ```VBA
46
+
47
+ If IsBookOpen = False Then
48
+
49
+
50
+
51
+ Dim xlApp As Excel.Application
52
+
53
+ If xlApp Is Nothing Then
54
+
55
+ Set xlApp = New Excel.Application
56
+
57
+ xlApp.Visible = True
58
+
59
+ End If
60
+
61
+ xlApp.Workbooks.Open FSO.BuildPath(Fol, FileName), UpdateLinks:=1
62
+
63
+
64
+
65
+ End If
66
+
67
+
68
+
69
+ End If
70
+
71
+
72
+
73
+ Application.Wait Now() + TimeValue("00:00:10")
74
+
75
+
76
+
77
+ FileName = Dir()
78
+
79
+
80
+
81
+ Loop
82
+
83
+
84
+
85
+ Next
86
+
87
+
88
+
89
+ Set GetFolder = Nothing
90
+
91
+
92
+
93
+ If Not xlApp Is Nothing Then
94
+
95
+ xlApp.Quit
96
+
97
+ End If
98
+
99
+
100
+
101
+
102
+
103
+ ```

1

他の原因を追記

2021/04/19 01:39

投稿

xail2222
xail2222

スコア1497

test CHANGED
@@ -9,3 +9,29 @@
9
9
 
10
10
 
11
11
  もしかしたら他にもVBAの実行を止める処理もあるかもしれませんが。
12
+
13
+ (追記)
14
+
15
+ 起動時のマクロで起動したファイル自身をクローズしている場合もありました。
16
+
17
+ 「起動時のマクロで起動したファイル自身をクローズ」するのをやめて
18
+
19
+ 呼び出し側でクローズする必要があります。
20
+
21
+
22
+
23
+ 今回の事例であれば
24
+
25
+ 「起動時のマクロで起動したファイル自身をクローズ」している箇所をカットorコメントアウトし
26
+
27
+ 呼び出し時のコードを以下のようにすることになると思います。
28
+
29
+ ```VBA
30
+
31
+ Dim subbook As Workbook
32
+
33
+ Set subbook = Workbooks.Open(FileName, UpdateLinks:=1)
34
+
35
+ subbook.Close SaveChanges:=True
36
+
37
+ ```