Ich weiß, dass dies ein wenig alt ist, aber es sah nach einer interessanten Herausforderung aus. Wenn Sie dies in ein Modul einfügen und es ausführen, wird eine Textdatei mit der RecordSource für jedes Formular und der RowSource für jede ComboBox oder ListBox mit einem RowSourceType von "Table/Query" erstellt. Wenn ich mich richtig erinnere, sollten Sie damit jede Eigenschaft erhalten, für die eine Abfrage verwendet werden könnte. Wenn ich mich nicht richtig erinnere, können Sie den Code optimieren, um die anderen zu erfassen oder das Format der Ausgabe zu ändern.
Wenn Sie alle Eigenschaften aller Formulare ausgeben wollten, könnten Sie eine for each-Schleife in der Eigenschaftssammlung des Formulars ausführen und diese in eine Datei schreiben. Das Problem dabei ist, dass Formulare bestimmte Eigenschaften haben, wie z. B. PrtMip und PrtDevName, die Strukturen sind und daher die Write- oder Writeline-Methoden stören. Wenn Sie also versuchen würden, diese Eigenschaften in eine Datei zu schreiben, müssten Sie zuerst eine spezielle Behandlung vornehmen. Ich glaube auch, dass die Lesezeichen-Eigenschaft ebenfalls problematisch sein kann.
Sub ListProperties()
Dim frm As Object
Dim ctl As Control
Dim fs As Object
Dim file As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set file = fs.CreateTextFile("C:\FormProps.txt", True)
For Each frm In CurrentProject.AllForms
DoCmd.OpenForm frm.Name, acNormal, , , , acHidden
Next frm
For Each frm In Forms
file.writeline (frm.Name)
file.writeline (String(Len(frm.Name), "-"))
file.writeline "RecordSource" & Chr(9) & frm.Properties("RecordSource")
For Each ctl In frm.Controls
With ctl
Select Case .ControlType
Case acComboBox, acListBox
.SetFocus
If .RowSourceType Like "Table/Query" Then
file.writeline Chr(9) & .Name & Chr(9) & "RowSource" & Chr(9) & .RowSource
End If
End Select
End With
Next ctl
file.writeline
Next frm
For Each frm In Forms
DoCmd.Close acForm, frm.Name
Next frm
End Sub