回答編集履歴

2

コード修正

2018/08/08 07:00

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -68,6 +68,8 @@
68
68
 
69
69
  appAccess.CloseCurrentDatabase
70
70
 
71
+ appAccess.Quit
72
+
71
73
  Set appAccess = Nothing
72
74
 
73
75
 

1

訂正コードの追記

2018/08/08 06:59

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -1,6 +1,4 @@
1
1
  `Set Containers = CurrentDb.Containers`の`CurrentDb`は開いているAccdbのDataBaseという意味だから、ここを、下記のように他のAccdbファイルを開いて使用すればいいでしょう。
2
-
3
-
4
2
 
5
3
  ```vba
6
4
 
@@ -18,6 +16,64 @@
18
16
 
19
17
  Db.Close: Set Db = Nothing
20
18
 
19
+ ```
20
+
21
+ 訂正
22
+
23
+ ---
24
+
25
+ `SaveAsText`メソッドは、`Access.Application`のメソッドなので、下記のコードになりますね。
26
+
27
+ マクロ名は、`CurrentProject.AllMacros`を`For Each`でループさせれば取得できますので、 `OpenDatabase`は不要です。
21
28
 
22
29
 
30
+
31
+ ```vba
32
+
33
+ Sub ExportMacro()
34
+
35
+ Dim OutDir As String
36
+
37
+ Dim acObj As AccessObject
38
+
39
+ Dim appAccess As Access.Application
40
+
41
+ Dim strDB As String
42
+
43
+
44
+
45
+ strDB = "C:\TEST1\Database1.accdb"
46
+
47
+ OutDir = "C:\TEST1\"
48
+
49
+
50
+
51
+ Set appAccess = CreateObject("Access.Application")
52
+
53
+ appAccess.OpenCurrentDatabase strDB
54
+
55
+
56
+
57
+ 'マクロの数だけ繰り返し
58
+
59
+ For Each acObj In appAccess.CurrentProject.AllMacros
60
+
61
+ appAccess.Application.SaveAsText ObjectType:=AcObjectType.acMacro, _
62
+
63
+ ObjectName:=acObj.Name, _
64
+
65
+ FileName:=OutDir & acObj.Name & ".txt"
66
+
67
+ Next
68
+
69
+ appAccess.CloseCurrentDatabase
70
+
71
+ Set appAccess = Nothing
72
+
73
+
74
+
75
+ MsgBox "処理終了"
76
+
77
+ End Sub
78
+
23
79
  ```