С моей точки зрения, этот вопрос, действительно, слишком широкий, и никаких усилий не было показано , но, по крайней мере, у вас может быть начальная точка. Я сделал код, который перечисляет таблицы и запросы (исключая таблицы SYS, но вы можете адаптировать его к вашим потребностям). Также перечислены имена и типы полей.
О получении примеров значений, для этого вам нужно будет открыть набор записей для каждого объекта, поскольку этот код занимает довольно много времени. Кроме того, вы запрашиваете 1-3 значения, когда в запросе / таблице может быть 0,1 или 2, поэтому также необходимо проверять каждый раз количество записей и так далее. Так что я проигнорировал эту часть.
Но, по крайней мере, код получит таблицы и запросы с именами, полями и именами полей.
БОНУС: Да, он также получит SQL-код запросов.
Private Sub SHOW_DB_INFO()
Dim db As Database
Dim tdf As TableDef
Dim x As Integer
Dim i As Double
Dim AppExcel As Object
Dim WK As Object
Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.ScreenUpdating = False
AppExcel.Workbooks.Add
Set WK = AppExcel.ActiveWorkbook.ActiveSheet
Set db = CurrentDb
For Each tdf In db.TableDefs
If Left(tdf.Name, 4) <> "MSys" Then ' Don't enumerate the system tables
For x = 0 To tdf.Fields.Count - 1
i = i + 1
WK.Range("A" & i).Value = "Table"
WK.Range("B" & i).Value = tdf.Name
WK.Range("C" & i).Value = tdf.Fields(x).Name
WK.Range("D" & i).Value = FLD_TYPENAME(tdf.Fields(x).Type) 'enumeration can be found here: https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/datatypeenum-enumeration-dao
Next x
End If
Next tdf
Dim qdf As QueryDef
For Each qdf In db.QueryDefs
For x = 0 To qdf.Fields.Count - 1
i = i + 1
WK.Range("A" & i).Value = "Query"
WK.Range("B" & i).Value = qdf.Name
WK.Range("C" & i).Value = qdf.Fields(x).Name
WK.Range("D" & i).Value = FLD_TYPENAME(qdf.Fields(x).Type)
WK.Range("E" & i).Value = qdf.SQL
Next x
Next qdf
AppExcel.Visible = True
AppExcel.ScreenUpdating = True
Set WK = Nothing
Set AppExcel = Nothing
End Sub
Вам понадобится также этот UDF
Private Function FLD_TYPENAME(ByVal vType As Integer) As String
Select Case vType
Case Is = 101: FLD_TYPENAME = "Attachment data"
Case Is = 16: FLD_TYPENAME = "Big Integer data"
Case Is = 9: FLD_TYPENAME = "Binary data"
Case Is = 1: FLD_TYPENAME = "Boolean (True/False) data"
Case Is = 2: FLD_TYPENAME = "Byte (8-bit) data"
Case Is = 18: FLD_TYPENAME = "Text data (fixed width)"
Case Is = 102: FLD_TYPENAME = "Multi-valued byte data"
Case Is = 108: FLD_TYPENAME = "Multi-value decimal data"
Case Is = 106: FLD_TYPENAME = "Multi-value double-precision floating-point data"
Case Is = 107: FLD_TYPENAME = "Multi-value GUID data"
Case Is = 103: FLD_TYPENAME = "Multi-value integer data"
Case Is = 104: FLD_TYPENAME = "Multi-value long integer data"
Case Is = 105: FLD_TYPENAME = "Multi-value single-precision floating-point data"
Case Is = 109: FLD_TYPENAME = "Multi-value Text data (variable width)"
Case Is = 5: FLD_TYPENAME = "Currency data"
Case Is = 8: FLD_TYPENAME = "Date value data"
Case Is = 20: FLD_TYPENAME = "Decimal data (ODBCDirect only)"
Case Is = 7: FLD_TYPENAME = "Double-precision floating-point data"
Case Is = 21: FLD_TYPENAME = "Floating-point data (ODBCDirect only)"
Case Is = 15: FLD_TYPENAME = "GUID data"
Case Is = 3: FLD_TYPENAME = "Integer data"
Case Is = 4: FLD_TYPENAME = "Long Integer data"
Case Is = 11: FLD_TYPENAME = "Binary data (bitmap)"
Case Is = 12: FLD_TYPENAME = "Memo data (extended text)"
Case Is = 19: FLD_TYPENAME = "Numeric data (ODBCDirect only)"
Case Is = 6: FLD_TYPENAME = "Single-precision floating-point data"
Case Is = 10: FLD_TYPENAME = "Text data (variable width)"
Case Is = 22: FLD_TYPENAME = "Data in time format (ODBCDirect only)"
Case Is = 23: FLD_TYPENAME = "Data in time and date format (ODBCDirect only)"
Case Is = 17: FLD_TYPENAME = "Variable Binary data (ODBCDirect only)"
Case Else: FLD_TYPENAME = "Not found/Unknown"
End Select
End Function
Код должен быть выполнен из самого Access. Вставьте оба кода в модуль и выполните его.
Надеюсь, вы сможете адаптировать это к вашим потребностям.