标题的一点背景:我编写了一个在打开工作簿时调用的宏。它在共享目录上打开一个 [shared] 工作簿,并将一些信息提取到用户正在使用的工作簿中。
任何使用此工作表的用户已经将共享目录映射到他们的计算机(并且宏会找到正确的驱动器号)。
我已经与我办公室的用户多次测试过这个工作表。我还对其进行了测试,并让两个人同时打开工作簿,以确认两个用户的宏能够同时从共享工作簿中提取数据。
到目前为止,我没有任何问题。
然后这张表被推广给我公司的多个其他用户。总而言之,预计大约有 40 人会使用这张表(不一定同时使用.. 只是总数)。
其中一位用户位于波兰(我位于伦敦)。
当他打开工作簿时,他会收到“Microsoft Excel 正在等待另一个应用程序完成 OLE 操作”的通知。该通知带有一个“确定”按钮。按此按钮似乎没有任何效果,工作簿有效地挂在此通知上。
我在解决这个问题时遇到了很多麻烦,因为我无法复制它。有谁知道为什么会出现这种情况?下面的代码:
Sub PreliminaryDataImport()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim x As Variant
Dim usename As String
usename = Environ("USERNAME")
Dim xlo As New Excel.Application
Dim xlw As New Excel.Workbook, wkbk As New Excel.Workbook
Dim xlz As String, regions As String
Dim LRow As Long, LCell As Long, LRow2 As Long
Dim RegionList As String
RegionList = ""
xlz = Sheet1.Range("o1").Value & "\Region Planning\TestDB.xlsx"
Set xlw = xlo.Workbooks.Open(xlz)
If Not Sheet11.Range("S1").Value = xlw.Worksheets("validation") _
.Range("N1").Value Then
MsgBox "YOU ARE USING AN OUT OF DATE VERSION" & vbLf & _
"Please check your inbox or contact xxxx for the current version."
xlw.Close False
Set xlo = Nothing
Set xlw = Nothing
Call Module7.ProtectSheets
End
End If
x = CheckValidation(usename, xlw)
'~~ Check to see if User has access to view/modify.
'~~ If they have access, return regions
On Error Resume Next
For i = LBound(x) To UBound(x)
regions = regions + " --- " & x(i)
RegionList = RegionList + x(i) & ", "
Sheet1.Cells(i + 2, 33).Value = x(i)
Next
If Err.Number <> 0 Then
MsgBox "You do not have access to view or modify any regions."
xlw.Close False
Set xlo = Nothing
Set xlw = Nothing
End
Else
MsgBox "You have access to view and modify the following regions:" & vbLf _
& vbLf & regions & "---"
我相信问题发生在这部分代码的某个地方,因为最后一行的 msgbox 在通知之前没有显示。我无法在他的机器上运行调试,因为他位于远程,这将是一项巨大的工作(只有在绝对必要时才应该这样做)。
任何人都知道为什么这个用户会收到这个错误?我特别困惑,因为只有他有问题。