⏱ 30秒でわかる!この記事の結論
- 悩み: Accessの開発環境は閉鎖的で、Cursorなどの最新AIエディタの恩恵を受けにくい。
- 解決策: フォームもクエリもVBAも、全オブジェクトを一括でテキストファイルとして出力すれば解決!
- 方法: 本記事のVBAを実行し、出力されたテキストファイルをGeminiやChatGPTに読み込ませるだけ。
Access開発とAIの相性の悪さを「テキスト出力」で解消する
最近のAI開発ツールは非常に優秀ですが、こと Microsoft Access の開発においては以下の壁にぶつかります。
- AIエディタ(CursorやWindsurfなど)が直接Accessファイル(
.mdb/.accdb)を読み込めない - フォームの裏側にあるVBAや、クエリのSQL文を一つずつコピペしてAIに渡すのは地獄
これを解決するのが、Accessに標準搭載されている Application.SaveAsText という隠しメソッド(非公開メソッド)です。
この機能を使えば、コードだけでなく**「テーブル定義」「クエリ(SQL)」「フォーム・レポートの画面レイアウト」まで、データベースの全構造をテキストとして一括出力**できます。
🚀 コピペ用VBAコード:全オブジェクト一括出力
Accessを開き、標準モジュールに以下のコードを貼り付けて実行してください。
(※実行前にデータベースを一度保存しておく必要があります)
Sub ExportAllAccessObjects()
Dim folderPath As String
Dim exportFolder As String
Dim obj As Object
' 保存先フォルダのパスを作成 (Accessファイルと同じ階層)
folderPath = CurrentProject.Path
If folderPath = "" Then
MsgBox "このデータベースは一度保存されている必要があります。", vbExclamation
Exit Sub
End If
exportFolder = folderPath & "\Access_Objects"
' フォルダが存在しない場合は作成
If Dir(exportFolder, vbDirectory) = "" Then
MkDir exportFolder
End If
' エラー発生時は次の処理へ(一部のエラーを出力回避するため)
On Error Resume Next
' --- 1. テーブルの出力 ---
For Each obj In CurrentData.AllTables
' システムテーブル(MSys~)は除外してエクスポート
If Left(obj.Name, 4) <> "MSys" Then
Application.SaveAsText acTable, obj.Name, exportFolder & "\Table_" & obj.Name & ".txt"
End If
Next obj
' --- 2. クエリの出力 ---
For Each obj In CurrentData.AllQueries
Application.SaveAsText acQuery, obj.Name, exportFolder & "\Query_" & obj.Name & ".txt"
Next obj
' --- 3. フォームの出力 (画面レイアウト+裏のVBAコードが一緒に出力されます) ---
For Each obj In CurrentProject.AllForms
Application.SaveAsText acForm, obj.Name, exportFolder & "\Form_" & obj.Name & ".txt"
Next obj
' --- 4. レポートの出力 ---
For Each obj In CurrentProject.AllReports
Application.SaveAsText acReport, obj.Name, exportFolder & "\Report_" & obj.Name & ".txt"
Next obj
' --- 5. 標準モジュール・クラスモジュール(VBA)の出力 ---
For Each obj In CurrentProject.AllModules
Application.SaveAsText acModule, obj.Name, exportFolder & "\Module_" & obj.Name & ".txt"
Next obj
' --- 6. Accessマクロの出力 (VBAではなくAccess機能のマクロ) ---
For Each obj In CurrentProject.AllMacros
Application.SaveAsText acMacro, obj.Name, exportFolder & "\Macro_" & obj.Name & ".txt"
Next obj
On Error GoTo 0
MsgBox "すべてのテーブル定義やコードを " & exportFolder & " に出力しました。", vbInformation
End Sub