0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【コピペで完了】Accessの全設計情報をテキスト化してAI(Gemini等)に丸投げするVBA

0
Posted at

⏱ 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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?