Brian有一个复杂的工作簿,可以非常短暂地打开其他支持工作簿,然后将其关闭以保存更改。他有一个由三个人使用他的宏的办公室,有时他们会因为两个人试图获得http://www.formville.com/C17_free-purchase-orders.html [购买订单] ||而发生冲突。 |||同时编号。这导致PO工作簿在第二次出现时以“只读”模式打开,这会使用户感到困惑。 Brian想知道如果目标工作簿已经由其他用户打开,是否有一行VBA代码会停止“打开工作簿”命令。这样,他就可以在潜在问题发生之前就发现它们。

打开代码后,查看工作簿是否以只读模式打开会更容易。如果确实如此,那么您可以采取适合您情况的措施。 (例如,您可以关闭工作簿,等待一小段时间,然后重试该操作并进行测试。)以下是检查只读状态的方法:

Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx")



If wkBook1.ReadOnly Then     wkBook1.Close False End If

请注意,正是ReadOnly属性产生了所需的信息。如果需要提前检查文件,则可以尝试使用VBA中提供的一些文件访问语句。这就是下面的功能。

Function FileIsLocked(strFileName As String) As Boolean     FileIsLocked = False     On Error Resume Next     Open strFileName For Binary Access Read Write Lock Read Write As #1     Close #1

' If an error occurs, the document is currently open     If Err.Number <> 0 Then        FileIsLocked = True        Err.Clear     End If End Function

若要使用该功能,请向其传递要检查的工作簿的名称(包括完整路径)。如果文件被锁定,则该函数返回True;否则,该函数返回False。但是请记住,从此功能检查文件到实际尝试打开文件的时间,它可能已被其他人打开。因此,第一种方法(尝试打开后进行检查)可能是最好的使用方法。)

还应注意,您还可以将其他工作簿另存为共享工作簿。这将允许多个用户毫无问题地打开它们。当然,您将需要检查这种方法如何影响您可能希望保存在工作簿中的数据。

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(5831)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。