I have a DB in Access with an incredible amount of tables. Unfortunately, the creator used very non-descriptive names, so it\'s basically impossible to even guess what a tab
This procedure will list the table name and column name for any columns whose names contain the text you supply. The results are printed in the Immediate window (go there with Ctrl+g)
Public Sub ListTablesWithColumnNamesContaining(ByVal pText As String)
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb
For Each tdf In db.TableDefs
For Each fld In tdf.Fields
If InStr(1, fld.Name, pText, vbTextCompare) > 0 Then
Debug.Print tdf.Name & ":", fld.Name
End If
Next fld
Next tdf
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
End Sub
There is a way to find all the tables having a particular column name, but it requires some code (as opposed to being able just to run a query).
First you need to make the system tables "visible" in the database. You don't mention which version of MS Access is being used, but the Option dialog should allow something along these lines.
This exposes the table MSysObjects
which contains all the user table names.
You would presumbably want to iterate through all the user tables, passing there names into some code that opens the tables as DAO.TableDef
objects and examines the attributes of the corresponding Fields
collection.
Allen Browne has some VBA code that displays these attributes. You can customize this to your needs.