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)
我发现这应该有帮助,它实际上并没有读取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)
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |