I use this:
Function listfields(strTableName As String) As String
Dim db As Database
Dim rs As Recordset
Dim strSQL As String
Dim Field As Field
Set db = CurrentDb
strSQL = "SELECT * FROM " & strTableName
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
For Each Field In rs.Fields
listfields = Field.Name 'You can send to an array or another table here
Next
End Function
Here is a start. You pass the table name to this function. Instead of passing the table name, you could have another For loop that goes through all your tables (skip system tables - there are posts on this site on how to do that.) and list all field names for all your pertinent tables.
Also you could send the name to an array or write to a new table, etc...
What do you need to do with the table names?