質問編集履歴

6

誤字修正、内容追記

2016/05/20 05:26

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
File without changes
test CHANGED
@@ -24,6 +24,10 @@
24
24
 
25
25
  ```
26
26
 
27
+ ---ThisWorkbook---
28
+
29
+
30
+
27
31
  Private Sub Workbook_BeforeClose(Cancel As Boolean)
28
32
 
29
33
  If CanClose = False Then
@@ -44,7 +48,7 @@
44
48
 
45
49
 
46
50
 
47
- ---モジュール---
51
+ ---標準モジュール---
48
52
 
49
53
 
50
54
 

5

誤字修正

2016/05/20 05:26

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
- Excel VBAで、名称違いのほぼ同一内容のCSVファイルを同時に開いているときに、片方のブックだけを終了しようとするともう片方のブックに悪影響を与えていきます。
1
+ Excel VBAで、名称違いのほぼ同一内容のxlsファイルを同時に開いているときに、片方のブックだけを終了しようとするともう片方のブックに悪影響を与えていきます。
2
2
 
3
- CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
3
+ xlsファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
4
4
 
5
5
  ②BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
6
6
 

4

修正

2016/05/20 05:12

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ③loopさせているわけではないのにSystem_CloseのEnd Subまでたどり着くともう一度System_Closeを実行し、エラーになる。
8
8
 
9
- 『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
9
+
10
10
 
11
11
 
12
12
 

3

誤字修正

2016/05/20 02:34

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ②BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
6
6
 
7
- ③loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
7
+ ③loopさせているわけではないのにSystem_CloseのEnd Subまでたどり着くともう一度System_Closeを実行しエラーになる。
8
8
 
9
9
  『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
10
10
 

2

質問内容追記

2016/05/20 02:08

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,10 +1,12 @@
1
1
  Excel VBAで、名称違いのほぼ同一内容のCSVファイルを同時に開いているときに、片方のブックだけを終了しようとするともう片方のブックに悪影響を与えていきます。
2
2
 
3
- CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
3
+ CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
4
4
 
5
- BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
5
+ BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
6
6
 
7
- loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
7
+ loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
8
+
9
+ 『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
8
10
 
9
11
 
10
12
 
@@ -119,3 +121,15 @@
119
121
 
120
122
 
121
123
  ```
124
+
125
+
126
+
127
+ 追記
128
+
129
+ コメントを参考に検証を行い、不明な点が浮かんできたので質問させてください。
130
+
131
+
132
+
133
+ ①ファイル起動時に独立したプロセスで起動する方法。
134
+
135
+ Shell関数で名称を指定してしまうと、拡張子の有無で起動出来るかどうかが変わってしまうため、安定した起動方法を一緒に考えてほしい、ファイルの起動中に同一プロセスに別のファイルが入ってしまうと同じ現象が起こりそうなので、独立したプロセスを維持できるようにしたい。

1

(5/20)コードに追記しました。

2016/05/20 02:06

投稿

KEN_aivan
KEN_aivan

スコア14

test CHANGED
@@ -1 +1 @@
1
- VBA ほぼ同内容のブックを複数起動状態での終了処理エラーについて
1
+ ExcelVBA ほぼ同内容のブックを複数起動状態での終了処理エラーについて
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
-
21
+ Excel2003 SP3
22
22
 
23
23
  ```
24
24
 
@@ -58,11 +58,33 @@
58
58
 
59
59
 
60
60
 
61
+ Application.ScreenUpdating = False
62
+
63
+
64
+
65
+ Dim CMsg, CStyle, CTitle, CResponse, CString
66
+
67
+ CMsg = "Excelを終了します。よろしいですか?"
68
+
69
+ CStyle = vbYesNo
70
+
71
+ CTitle = "終了"
72
+
73
+ Response = MsgBox(CMsg, CStyle, CTitle)
74
+
75
+ If Response = vbYes Then ' [はい] がクリックされた場合、
76
+
77
+ MyString = "Yes"
61
78
 
62
79
 
80
+
63
- 終了確認ダイヤログボックスの起動やメニューバーを表示させたりするApplication.CommandBars多数、割愛)
81
+ 隠したメニューバーを表示させたりするApplication.CommandBars多数、割愛)
64
82
 
65
83
 
84
+
85
+ Application.DisplayAlerts = False '変更保存のメッセージを表示させない
86
+
87
+ Application.ScreenUpdating = True 'Excelを終了
66
88
 
67
89
  CanClose = True
68
90
 
@@ -82,6 +104,16 @@
82
104
 
83
105
 
84
106
 
107
+ Else ' [いいえ] がクリックされた場合、Msgboxを閉じる
108
+
109
+
110
+
111
+
112
+
113
+ MyString = "No"
114
+
115
+ End If
116
+
85
117
  End Sub
86
118
 
87
119