MDBファイルに定義されているすべてのフォームとそのフォームに定義されている各コントロール&プロパティ情報をExcelで出力する方法です。
こんなことやりたいという人がいるかわかりませんが、Access MDBの構造調査したり、データのマッピング状況を確認するレベルなら使えると思います。
ただし、定義しているフォーム数やコントロール数が多いと、使用しているExcelのバージョンによっては、件数オーバーで出力できなくなりますのでご注意下さい。
手順1:MDB内に下記のようなワークテーブル(使用フォーム一覧)を作成します。
id (オートナンバー型)
フォーム名(テキスト型 255桁)
コントロール名(テキスト型 255桁)
プロパティ名(テキスト型 255桁)
プロパティ値(メモ型)

手順2:作成したワークテーブルに対する、下記の追加クエリを「使用フォーム一覧作成」という名前で作成します。
PARAMETERS formname Text ( 255 ), controlname Text ( 255 ), propertyname Text ( 255 ), propertyvalue Text ( 255 );
INSERT INTO 使用フォーム一覧 ( フォーム名, コントロール名, プロパティ名, プロパティ値 )
SELECT [formname] AS 式1, [controlname] AS 式2, [propertyname] AS 式3, [propertyvalue] AS 式4;
手順3:同様にワークテーブルに対する、下記の削除クエリを「使用フォーム一覧削除」という名前で作成します。
DELETE * FROM 使用フォーム一覧;
手順4:VBAモジュールに下記のコードを追加します。
Option Compare Database
Public Sub DefFormToTextFile()
Dim item As AccessObject
Dim formName As String
Dim f As Form
Dim c As Control
Dim p As Property
Dim propFlag As Boolean
Dim adocon As adodb.Connection
Dim adoprm As adodb.Parameter
Dim adocom As adodb.Command
Set adocon = CurrentProject.Connection
DoEvents
' 前回実行結果削除
Set adocom = New adodb.Command
Set adocom.ActiveConnection = adocon
adocom.CommandText = "使用フォーム一覧削除"
adocom.Execute
Set adocom = Nothing
' ワークテーブル実行
For Each item In Application.CurrentProject.AllForms
formName = item.Name
DoCmd.OpenForm formName, acDesign, , , , acHidden
Set f = Forms(formName)
For Each c In f.Controls
' コントロールのタイプから詳細を出力するか振り分ける
propFlag = False
Select Case c.ControlType
Case acCheckBox
propFlag = True
Case acComboBox
propFlag = True
Case acListBox
propFlag = True
Case acTextBox
propFlag = True
End Select
' プロパティ列挙対象のコントロールの場合
If propFlag Then
' プロパティの列挙
For Each p In c.Properties
'トランザクションスタート
adocon.BeginTrans
Set adocom = New adodb.Command
Set adocom.ActiveConnection = adocon
adocom.CommandText = "使用フォーム一覧作成"
Set adoprm = adocom.CreateParameter("formname", adVarChar, adParamInput, 255, formName)
adocom.Parameters.Append adoprm
Set adoprm = adocom.CreateParameter("controlname", adVarChar, adParamInput, 255, c.Name)
adocom.Parameters.Append adoprm
Set adoprm = adocom.CreateParameter("propertyname", adVarChar, adParamInput, 255, p.Name)
adocom.Parameters.Append adoprm
On Error Resume Next
Set adoprm = adocom.CreateParameter("propertyvalue", adVarChar, adParamInput, 10000, p.Value)
adocom.Parameters.Append adoprm
If Err.number <> 0 Then
Set adoprm = adocom.CreateParameter("propertyvalue", adVarChar, adParamInput, 10000, "")
adocom.Parameters.Append adoprm
End If
Err.Clear
On Error GoTo 0
Set adoprm = Nothing
adocom.Execute
adocon.CommitTrans
Set adocom = Nothing
DoEvents
Next p
End If
Next c
DoCmd.Close acForm, formName
Next item
' ワークテーブルを閉じる
Set adocom = Nothing
adocon.Close
' Excel出力
DoCmd.OutputTo acOutputTable, _
"使用フォーム一覧", _
acFormatXLS, _
"c:\work\AccessFormControlList.xls"
End Sub
手順5:必要に応じてExcel出力先を変更します。(「c:\work\AccessFormControlList.xls」の部分)
手順6:VBAエディタから、「DefFormToTextFile」マクロを実行すれば完成です。
もし、出力件数が多すぎた場合は、マクロコード内でフィルタリングするよう対応してください。
また、件数が多すぎて、Excelの出力エラーが発生した場合は、「DoCmd.OutputTo acOutputTable」の処理を削除し、
結果をワークテーブルに保存するだけにとどめておいてください。
(ワークテーブルにさえ溜めておけば、後の対応はいくらでもできますので・・・)
ふぅ、このツールを作成したのは良いものの、益々、AccessとVBAが嫌いになりそうです・・・