回答編集履歴

2

回答変更

2020/01/31 04:29

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -1,3 +1,61 @@
1
+ 回答を変更しました。
2
+
3
+
4
+
5
+ ```VBA
6
+
7
+ #ACCESS上のコード
8
+
9
+ Public Sub 実行()
10
+
11
+ #このマクロには、複数のマクロを動かすように設定しています
12
+
13
+ DoCmd.RunMacro "マクロ"
14
+
15
+ End Sub
16
+
17
+ ```
18
+
19
+
20
+
21
+ `DoCmd.RunMacro`は非同期で実行します。よって`実行()`内で非同期で実行している
22
+
23
+ `"マクロ"`が動作中に`.CloseCurrentDatabase`でデータベースを閉じてAccessを終了しようとしています。
24
+
25
+ よって、Accessは「runmacro アクションの実行は取り消されました」となります。
26
+
27
+
28
+
29
+ 同期で待つ場合は、その中の処理でも非同期で実行されるものがあっては
30
+
31
+ 想定通りの処理はされません。
32
+
33
+
34
+
35
+ ```VBA
36
+
37
+ Public Sub 実行()
38
+
39
+ #このマクロには、複数のマクロを動かすように設定しています
40
+
41
+ Application.Run "マクロ"
42
+
43
+ Application.Run "マクロ2"
44
+
45
+ Application.Run "マクロ3"
46
+
47
+ End Sub
48
+
49
+ ```
50
+
51
+
52
+
53
+ ----
54
+
55
+ 以下間違い
56
+
57
+
58
+
1
59
  ```VBA
2
60
 
3
61
  With oAcc

1

追記

2020/01/31 04:29

投稿

Y.H.
Y.H.

スコア7914

test CHANGED
@@ -19,3 +19,9 @@
19
19
  `"実行"`マクロが動作中に`.CloseCurrentDatabase`でデータベースを閉じてAccessを終了しようとしています。
20
20
 
21
21
  よって、Accessは「runmacro アクションの実行は取り消されました」となります。
22
+
23
+
24
+
25
+ よって、何らかの方法でAccessで実行しているマクロ`実行`が終了するのを待つ必要があります。
26
+
27
+ マクロの実行が終了してから`.CloseCurrentDatabase`,`.Quit`する必要があります。