【发布时间】:2021-09-06 07:43:53
【问题描述】:
你帮助我达到了这一点,现在我又陷入了困境。该宏运行良好,但在任何给定时间只有一个人可以运行它。如果两个用户试图同时运行它,他们会得到一个运行时错误。当我单击调试时,它会将我带到“myConn.Open”
为了澄清,我不想让多个用户编辑 Excel 电子表格。他们只是以只读方式打开它以从中获取值,而不是以任何方式添加或编辑它。
Public Sub Letter()
Dim rngStory As Word.Range
Dim rngCount As Long
Dim mySQLquery As String
Dim myKey As String
Dim mySource As String
Dim slkAddresseeName, slkRegarding, slkFileNum, slkSalutation As String
Dim slkTemplate As String
Dim myConn As ADODB.Connection
Dim myRs As ADODB.Recordset
Dim slkTempDoc As String
' Prompt user for Login ID
myKey = InputBox("Enter Attorney or Paralegal LOGIN ID (e.g., jtorres or b324):")
' Make DB connection
mySQLquery = "SELECT * FROM [All_Users$] WHERE LoginID = '" & myKey & "'"
mySource = "\\servername\vol1\macros\master\LetterMemoDB.xlsx"
Set myConn = New ADODB.Connection
Set myRs = New ADODB.Recordset
With myConn
.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & mySource & ";Extended Properties=""Excel 8.0;HDR=YES"";"
End With
myConn.Open
myRs.Open mySQLquery, myConn, adOpenStatic, adLockReadOnly
' End of DB connections
我的猜测是我使用 ACE 作为提供程序,它可能无法支持多个同时连接。解决方法是什么?
【问题讨论】:
-
错误是:Rin-time error '-2147467259 (80004005)': The Microsoft Access database engine cannot open or write to the file"。它已经被其他用户以独占方式打开,或者您需要查看和写入其数据的权限。
-
仅供参考:较新的 ACE.OLEDB.12.0(替代 JET.OLEDB.4.0)应使用 Excel 12.0。
-
您可以尝试将
Mode=Read添加到连接字符串,和/或将源文件标记为只读。