Like I said, I don't know if this helps or not, but this is what I had going... and I think this was for Access if I remember right. We've now switched over to MS SQL Server.
Dim catDB As ADOX.Catalog
Dim tblList As ADOX.Table
Dim colList As ADOX.Column
On Error GoTo Fill_Error
SetReady "Grabbing tables/columns...", 500
If CURLOC <> "" Then
Set catDB = New ADOX.Catalog
' Open the catalog.
catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CURLOC
' Loop through all the tables, but not queries,
' and print their names and types.
ReDim TABLENAMES(0)
ReDim COLNAMES(0)
i = 0
j = 0
For Each tblList In catDB.Tables
If tblList.Type <> "VIEW" And tblList.Type <> "ACCESS TABLE" And tblList.Type <> "SYSTEM TABLE" Then
ReDim Preserve TABLENAMES(i + 1)
TABLENAMES(UBound(TABLENAMES) - 1) = tblList.Name
For Each colList In tblList.Columns
ReDim Preserve COLNAMES(j + 1)
lvAvailable.AddItem tblList.Name & "." & colList.Name
COLNAMES(UBound(COLNAMES) - 1) = tblList.Name & "." & colList.Name
j = j + 1
Next
i = i + 1
End If
Next
Set catDB = Nothing
lblq.Caption = lvQuery.ListCount
lblav.Caption = lvAvailable.ListCount
End If