2016-09-08 115 views
5

私はアクセスデータベースのlaccdbファイルの内容をVBAで見ることができるので、データベースにある他の人に(ボタンで)警告することができます。VBAでlaccdbファイルの内容を取得

具体的には、第三者のツールを使用したくないです。私は使用しようとしました:

Set ts = fso.OpenTextFile(strFile, ForReading) 
strContents = ts.ReadAll 

これは正常に1人のユーザーがデータベースにある場合、正常に動作します。しかし、それはおそらく非ASCII文字によって混乱し、一つのエントリの後にこの種のものになります複数のユーザーのために:

complete gibberish

誰もが何か提案がありますか?私はメモ帳++でファイルを開く場合は...最終的に使用コード


いいのよ、次のように(私はタイトルを必要としなかったし、使用されていないいくつかのコードを削除した)である:

Sub ShowUserRosterMultipleUsers() 
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset 

cn.Provider = "Microsoft.ACE.OLEDB.12.0" 
cn.Open "Data Source=" & CurrentDb.Name 

Set rs = cn.OpenSchema(adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 
While Not rs.EOF 
    Debug.Print rs.Fields(0) 
    rs.MoveNext 
Wend 

End Sub 

答えて

6

私は助けるべきこれを見つけ、それが実際にLDBファイルを読んでいないが、それはあなたが(出典:https://support.microsoft.com/en-us/kb/198755を):必要な情報がある

Sub ShowUserRosterMultipleUsers() 
    Dim cn As New ADODB.Connection 
    Dim cn2 As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Dim i, j As Long 

    cn.Provider = "Microsoft.Jet.OLEDB.4.0" 
    cn.Open "Data Source=c:\Northwind.mdb" 

    cn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _ 
    & "Data Source=c:\Northwind.mdb" 

    ' The user roster is exposed as a provider-specific schema rowset 
    ' in the Jet 4 OLE DB provider. You have to use a GUID to 
    ' reference the schema, as provider-specific schemas are not 
    ' listed in ADO's type library for schema rowsets 

    Set rs = cn.OpenSchema(adSchemaProviderSpecific, _ 
    , "{947bb102-5d43-11d1-bdbf-00c04fb92675}") 

    'Output the list of all users in the current database. 

    Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _ 
    "", rs.Fields(2).Name, rs.Fields(3).Name 

    While Not rs.EOF 
     Debug.Print rs.Fields(0), rs.Fields(1), _ 
     rs.Fields(2), rs.Fields(3) 
     rs.MoveNext 
    Wend 

End Sub 
+0

良い出発点のように見えます。私は変更する必要があるバージョンのJetを、4.0がaccdbファイルをサポートしないようにするために努力しています。何か案が? –

+3

私はそれを 'Microsoft.ACE.OLEDB.12.0'に変更し、' 'Data Source ="&CurrentDb.Properties(0).Value'を使用しました。グラシアス。 –

+1

Nifty。 @TimEdwards: 'CurrentDb.Name'は' CurrentDb.Properties(0).Value'より少し読みやすくなります:) – Andre

関連する問題