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

質問編集履歴

6

誤字修正、内容追記

2016/05/20 05:26

投稿

KEN_aivan
KEN_aivan

スコア14

title CHANGED
File without changes
body CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  Excel2003 SP3
13
13
  ```
14
+ ---ThisWorkbook---
15
+
14
16
  Private Sub Workbook_BeforeClose(Cancel As Boolean)
15
17
  If CanClose = False Then
16
18
  System_Close
@@ -21,7 +23,7 @@
21
23
  End Sub
22
24
 
23
25
 
24
- ---モジュール---
26
+ ---標準モジュール---
25
27
 
26
28
 
27
29
  Public CanClose As Boolean

5

誤字修正

2016/05/20 05:26

投稿

KEN_aivan
KEN_aivan

スコア14

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

4

修正

2016/05/20 05:12

投稿

KEN_aivan
KEN_aivan

スコア14

title CHANGED
File without changes
body CHANGED
@@ -2,8 +2,8 @@
2
2
  ①CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
3
3
  ②BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
4
4
  ③loopさせているわけではないのにSystem_CloseのEnd Subまでたどり着くともう一度System_Closeを実行し、エラーになる。
5
- 『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
6
5
 
6
+
7
7
  改善方法をいろいろと模索したのですがどこを弄っていいのかすら今一判っていません。
8
8
  せめてSystem_Closeになにか影響がある文だけでも直したいのですが、お力をお貸し願えないでしょうか?
9
9
  開いているブックには両方同じ内容が記載されています。

3

誤字修正

2016/05/20 02:34

投稿

KEN_aivan
KEN_aivan

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  Excel VBAで、名称違いのほぼ同一内容のCSVファイルを同時に開いているときに、片方のブックだけを終了しようとするともう片方のブックに悪影響を与えていきます。
2
2
  ①CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
3
3
  ②BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
4
- ③loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
4
+ ③loopさせているわけではないのにSystem_CloseのEnd Subまでたどり着くともう一度System_Closeを実行しエラーになる。
5
5
  『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
6
6
 
7
7
  改善方法をいろいろと模索したのですがどこを弄っていいのかすら今一判っていません。

2

質問内容追記

2016/05/20 02:08

投稿

KEN_aivan
KEN_aivan

スコア14

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,8 @@
1
1
  Excel VBAで、名称違いのほぼ同一内容のCSVファイルを同時に開いているときに、片方のブックだけを終了しようとするともう片方のブックに悪影響を与えていきます。
2
- CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
2
+ CSVファイル起動時にAuto_openで隠すようにしているツールボックスやメニューバーをSystem_Close時に再度表示されるようにマクロを組んでいるのですが、もう片方のブックのツールボックスやメニューバーを起動して終了する。
3
- BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
3
+ BeforeCloseを呼び出し時にもう片方に記載されているBeforeCloseを呼び出しにいき応答なしに。
4
- loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
4
+ loopさせているわけではないのにEndIFまでたどり着くともう一度同じIf文を実行しようとしエラーになる。
5
+ 『③追記』 どうもBeforeCloseを経由せずにSystem_Closeを呼び出しているため、System_Closeを完了後にBeforeCloseを呼び出してしまい、再度System_Closeを実行しているようです。
5
6
 
6
7
  改善方法をいろいろと模索したのですがどこを弄っていいのかすら今一判っていません。
7
8
  せめてSystem_Closeになにか影響がある文だけでも直したいのですが、お力をお貸し願えないでしょうか?
@@ -58,4 +59,10 @@
58
59
  End If
59
60
  End Sub
60
61
 
61
- ```
62
+ ```
63
+
64
+ 追記
65
+ コメントを参考に検証を行い、不明な点が浮かんできたので質問させてください。
66
+
67
+ ①ファイル起動時に独立したプロセスで起動する方法。
68
+ Shell関数で名称を指定してしまうと、拡張子の有無で起動出来るかどうかが変わってしまうため、安定した起動方法を一緒に考えてほしい、ファイルの起動中に同一プロセスに別のファイルが入ってしまうと同じ現象が起こりそうなので、独立したプロセスを維持できるようにしたい。

1

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

2016/05/20 02:06

投稿

KEN_aivan
KEN_aivan

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- VBA ほぼ同内容のブックを複数起動状態での終了処理エラーについて
1
+ ExcelVBA ほぼ同内容のブックを複数起動状態での終了処理エラーについて
body CHANGED
@@ -8,7 +8,7 @@
8
8
  開いているブックには両方同じ内容が記載されています。
9
9
 
10
10
 
11
-
11
+ Excel2003 SP3
12
12
  ```
13
13
  Private Sub Workbook_BeforeClose(Cancel As Boolean)
14
14
  If CanClose = False Then
@@ -28,9 +28,20 @@
28
28
 
29
29
  Sub System_Close()
30
30
 
31
+ Application.ScreenUpdating = False
32
+
33
+ Dim CMsg, CStyle, CTitle, CResponse, CString
34
+ CMsg = "Excelを終了します。よろしいですか?"
35
+ CStyle = vbYesNo
36
+ CTitle = "終了"
37
+ Response = MsgBox(CMsg, CStyle, CTitle)
38
+ If Response = vbYes Then ' [はい] がクリックされた場合、
39
+ MyString = "Yes"
31
40
 
32
- 終了確認ダイヤログボックスの起動やメニューバーを表示させたりするApplication.CommandBars多数、割愛)
41
+ 隠したメニューバーを表示させたりするApplication.CommandBars多数、割愛)
33
42
 
43
+ Application.DisplayAlerts = False '変更保存のメッセージを表示させない
44
+ Application.ScreenUpdating = True 'Excelを終了
34
45
  CanClose = True
35
46
 
36
47
  If Workbooks.Count = 1 Then
@@ -40,6 +51,11 @@
40
51
  ThisWorkbook.Close SaveChanges:=False
41
52
  End If
42
53
 
54
+ Else ' [いいえ] がクリックされた場合、Msgboxを閉じる
55
+
56
+
57
+ MyString = "No"
58
+ End If
43
59
  End Sub
44
60
 
45
61
  ```