通过VBA获取laccdb文件的内容

Tim*_*rds 6 ms-access vba filesystemobject access-vba ms-access-2013

我希望能够通过VBA查看访问数据库的laccdb文件的内容,以便我可以使用它来提醒用户(通过按钮)数据库中还有谁.

我特别不想使用第三方工具.我尝试过使用:

Set ts = fso.OpenTextFile(strFile, ForReading)
strContents = ts.ReadAll
Run Code Online (Sandbox Code Playgroud)

如果数据库中只有1个用户,则此工作正常.但对于多个用户来说,它可能会被大概非ASCII字符弄糊涂,并在一次输入后进入这种情况:

完全胡言乱语

有没有人有什么建议?如果我只是在Notepad ++中打开文件就没问题了......


最终使用的代码如下(我不需要标题并删除了一些未使用的代码):

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
Run Code Online (Sandbox Code Playgroud)

Use*_*716 8

我发现这应该有帮助,它实际上并没有读取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
Run Code Online (Sandbox Code Playgroud)

  • 我已将其更改为"Microsoft.ACE.OLEDB.12.0"并使用了"Data Source ="和CurrentDb.Properties(0).Value`,它看起来像是一个魅力!格拉西亚斯. (3认同)