自分用メモです。
古いAccessファイルにある大量のクエリーを分析したり調査、修正したりする際に、いちいちAccess上で確認したり、列名などで検索したりするのが大変なので、テキストファルにしてGrepでまとめて洗い出せないか……という場面に遭遇しました。少し検索した結果、VBAでテキストファイルにエクスポートするスクリプトを紹介してくれている人がいたので、参考にさせてもらいました。
こちらです。私の環境では、さらに参照設定で「Microsoft Scripting Runtime」など、FileSystemObjectを含んでいるライブラリーを参照しないとエラーになりましたので、そのあたりは適宜調整してください。
'クエリの出力 ''参照設定:Microsoft office 16.0 Object Library Private Sub ExportQuery() Dim queryAt As QueryDef Dim fs As New Scripting.FileSystemObject Dim streamAt As Scripting.TextStream Dim BaseDir As String Dim FileFullPath As String '出力先を指定。ここではプロジェクトフォルダ直下 BaseDir = CurrentProject.Path & "\" For Each queryAt In CurrentDb.QueryDefs 'クエリ分だけ回す 'ファイル名をフルパスで作成。 ここではクエリと同じ名称にする。 FileFullPath = BaseDir & queryAt.Name & ".sql" 'ファイル作成 (既に存在する場合上書き) Set streamAt = fs.CreateTextFile(FileFullPath, True, False) 'SQLの出力 Call streamAt.Write(queryAt.sql) Call streamAt.Close Set streamAt = Nothing Set queryAt = Nothing Next Set fs = Nothing End Sub
これで出てくるクエリーは、改行などの無いベタなテキストファイルになっています。そのままでは読みづらいので、1ファイルずつ下記のサイトで整形して保存しなおしました(150個ぐらいなので、手作業で15分ほどで終わりました)。