2015-04-29 109 views
0

與下面的代碼,我們可以從Access文件中提取表數據。迭代通過MDB的目錄,並提取元數據

大廈在此,是有可能通過的MDB的一個目錄遍歷和無需打開每一個提取該信息1),或2)打開每個一個,但沒有運行自動執行的宏。

Function dmwListAllTables() As String 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Dim tbl As AccessObject, db As Object 
Dim strMsg As String 

On Error GoTo Error_Handler 

Set dB = Application.CurrentData 
For Each tbl In db.AllTables 
Debug.Print tbl.Name 
Next tbl 

strMsg = " -- Tables listing complete -- " 

Procedure_Done: 
dmwListAllTables = strMsg 
Exit Function 

Error_Handler: 
strMsg = Err.Number & " " & Err.Description 
Resume Procedure_Done 

End Function 

烴源:http://www.consultdmw.com/access-VBA-list-objects.htm

BTW。該「環通」的部分是沒有問題的:

Sub REadThroughFiles() 
    Dim MyObj As Object, MySource As Object, file As Variant 
    file = Dir("c:\myfolder\") 
    While (file <> "") 
     If InStr(file, "myprefix") > 0 Then 
     // do something here... 
     End If 
    file = Dir 
    Wend 
End Sub 
+0

你想比表名以外的任何信息?應該包括那些鏈接表或者只包含在目標MDB的本地訪問表? – HansUp

+0

這是一篇有趣的文章。漢斯,你有答案嗎? –

+0

兩個本地Access表和ODBC(Oracle和IBM DB2)。 – itp

回答

1

您可以使用ADO OpenSchema方法列出的Access數據庫中的表。

這方法需要ADO Connection到目標數據庫,這意味着一個鎖定文件(.LDB.MDB文件)將創建/更新。但是,如果該數據庫包含AutoExec的宏,宏將不會運行。

Public Sub ListTables(ByVal pFullPath As String) 
    Const adSchemaTables As Long = 20 
    Dim cn As Object ' ADODB.Connection 
    Dim rs As Object ' ADODB.Recordset 
    Dim strConnect As String 
    Dim strProvider As String 

    strProvider = CurrentProject.Connection.Provider 
    strConnect = "Provider=" & strProvider & ";" & _ 
     "Data Source=" & pFullPath & ";" 
    Set cn = CreateObject("ADODB.Connection") 
    cn.Open strConnect 

    Set rs = cn.OpenSchema(adSchemaTables) 
    With rs 
     Do While Not .EOF 
      If !TABLE_TYPE <> "VIEW" Then 
       Debug.Print !TABLE_NAME 
      End If 
      .MoveNext 
     Loop 
     .Close 
    End With 
    cn.Close 
    Set rs = Nothing 
    Set cn = Nothing 
End Sub 

如果你也想看看是否每個這些項目的鏈接表或局部表,改變Debug.Print行這個......

Debug.Print !TABLE_NAME, !TABLE_TYPE 

更多信息,請How To Use the ADO OpenSchema Method in Visual Basic