1

有没有一种简单的方法可以从 VBA 检查当前 Excel 会话中是否打开了一个特别命名的电子表格?

4

3 回答 3

2
       Dim wBook As Workbook 
             'Check that Summary worksheet is available for update.
 on error goto ErrHandler
            Set wBook = Workbooks("CommittedSummary.xls") 
               If wBook Is Nothing Then 
        msgbox("Not Open")
            Else 'It is open
                MsgBox("The 'CommittedSummary.xls' workbook is already in use and 
                cannot be updated.  Please try again when the workbook Is available", _ 
                vbCritical, "Committed Request Edit") : exit sub
               End If 
    errhandler: msgbox("Workbooks is already open"):exit sub
于 2013-03-18T09:56:33.343 回答
2

使用错误处理如下

Sub Working()
Dim Wb As Workbook
Dim strFile As String
strFile = "X.xls"
On Error Resume Next
Set Wb = Workbooks(strFile)
On Error GoTo 0
If Not Wb Is Nothing Then
MsgBox strFile & " is open in this Excel instance"
Else
MsgBox strFile & vbNewLine & " is Closed in this Excel instance", vbCritical
End If
End Sub
于 2013-03-18T11:43:59.237 回答
-1

不要使用On Error Resume Next

仅仅因为代码会在该行崩溃并不意味着工作簿实际上没有打开。这只是意味着您的代码崩溃了。

如果您有两个 Excel.Application 实例,每个实例都有一个工作簿集合。并且可能没有在正确的工作簿集合中寻找。然后你的代码就会崩溃。您的代码崩溃可能还有其他原因。

不要在代码的正常流程中使用错误处理程序,这是不好的编程,会导致问题。错误处理是针对不可预见的问题。

于 2013-03-20T17:28:35.643 回答