如何使用 MS Excel 建立与读写锁定的 MS Access 的只读数据连接?

如何使用 MS Excel 建立与读写锁定的 MS Access 的只读数据连接?

我担心的是,我想要连接的文件中有一个读写锁,因为它正在被一个应用程序使用,如下所示: 锁定的 MS Access 文件

当我尝试刷新 MS Excel 中的数据连接时,出现这些错误/通知,因为无法连接到正在使用的 MS Access 文件:

第一

第二

第三

第四

deny write我想知道 MS Access 中是否有一个选项allow read可以让我建立一个read-only data connection到我的 MS Excel 文件,即使它已被锁定。

我在 MS Access 文件中找到了record-level locking选项,但我担心它可能会给正在将数据写入 MS Access 文件的主应用程序的用户带来问题。我尝试禁用它,但它仍然被锁定。选项如下所示: 记录级锁定选项

我的 Excel 数据连接到 Access 文件的连接字符串如下所示:

Provider=Microsoft.ACE.OLEDB.12.0;
User ID=Admin;
Data Source=C:\Users\ACER\Desktop\Test.MDB;
Mode=Share Deny Write;
Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;
Jet OLEDB:Support Complex Data=False

答案1

您可以使用此 VBA 以只读模式连接 Access 数据库:

Sub ReadFromAccess()
    Dim cn As Object, rs As Object
    Dim intColIndex As Integer
    Dim DBFullName As String
    Dim TargetRange As Range

    DBFullName = "C:\Users\Username\Desktop\Sample.mdb"

    Application.ScreenUpdating = False

    Set TargetRange = Sheets("Sheet1").Range("A1")
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFullName & ";" & "Persist Security Info=False;Mode=Read;"

    Set rs = CreateObject("ADODB.Recordset")
    rs.Open "SELECT * FROM Table Name", cn, , , adCmdText

    For intColIndex = 0 To rs.Fields.Count - 1
    TargetRange.Offset(1, intColIndex).Value = rs.Fields(intColIndex).Name
    Next

    TargetRange.Offset(1, 0).CopyFromRecordset rs

    Application.ScreenUpdating = True
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    On Error GoTo 0
    Exit Sub

End Sub

注意:

  • 文件路径C:\Users\用户名\Desktop\Sample.mdb工作表(“Sheet1”)。范围(“A1”)是可编辑的。
  • 代替数据库全名您可以使用文件路径变量 C:\Users\用户名\Desktop\Sample.mdb,正如我在评论中所展示的那样。

相关内容