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

回答編集履歴

2

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

2021/04/19 01:39

投稿

xail2222
xail2222

スコア1525

answer CHANGED
@@ -16,4 +16,37 @@
16
16
  Dim subbook As Workbook
17
17
  Set subbook = Workbooks.Open(FileName, UpdateLinks:=1)
18
18
  subbook.Close SaveChanges:=True
19
+ ```
20
+
21
+
22
+ 呼び出される側を修正したくない場合、以下になります
23
+ ```VBA
24
+ If IsBookOpen = False Then
25
+
26
+ Dim xlApp As Excel.Application
27
+ If xlApp Is Nothing Then
28
+ Set xlApp = New Excel.Application
29
+ xlApp.Visible = True
30
+ End If
31
+ xlApp.Workbooks.Open FSO.BuildPath(Fol, FileName), UpdateLinks:=1
32
+
33
+ End If
34
+
35
+ End If
36
+
37
+ Application.Wait Now() + TimeValue("00:00:10")
38
+
39
+ FileName = Dir()
40
+
41
+ Loop
42
+
43
+ Next
44
+
45
+ Set GetFolder = Nothing
46
+
47
+ If Not xlApp Is Nothing Then
48
+ xlApp.Quit
49
+ End If
50
+
51
+
19
52
  ```

1

他の原因を追記

2021/04/19 01:39

投稿

xail2222
xail2222

スコア1525

answer CHANGED
@@ -3,4 +3,17 @@
3
3
 
4
4
  Endの使用をやめて、Exit Sub などを使って処理を終了させる必要があるかと思います。
5
5
 
6
- もしかしたら他にもVBAの実行を止める処理もあるかもしれませんが。
6
+ もしかしたら他にもVBAの実行を止める処理もあるかもしれませんが。
7
+ (追記)
8
+ 起動時のマクロで起動したファイル自身をクローズしている場合もありました。
9
+ 「起動時のマクロで起動したファイル自身をクローズ」するのをやめて
10
+ 呼び出し側でクローズする必要があります。
11
+
12
+ 今回の事例であれば
13
+ 「起動時のマクロで起動したファイル自身をクローズ」している箇所をカットorコメントアウトし
14
+ 呼び出し時のコードを以下のようにすることになると思います。
15
+ ```VBA
16
+ Dim subbook As Workbook
17
+ Set subbook = Workbooks.Open(FileName, UpdateLinks:=1)
18
+ subbook.Close SaveChanges:=True
19
+ ```