VBAから、特定の名前のスプレッドシートが現在のExcelセッションで開いているかどうかを確認する簡単な方法はありますか?
質問する
97 次
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 のインスタンスが 2 つある場合、各インスタンスにはワークブック コレクションがあります。また、適切なワークブック コレクションを探していない可能性があります。その後、コードがクラッシュします。コードがクラッシュする理由は他にもある可能性があります。
コードの通常のフローでエラー ハンドラを使用しないでください。プログラミングが不適切であり、問題が発生する可能性があります。エラー処理は、予期しない問題に対するものです。
于 2013-03-20T17:28:35.643 に答える