異なる他のファイルと連携処理【Excel VBA】
k.w
SEへの道
ファイル を 指定して開く 方法は、①ファイル名保存先を固定して開く方法と、②都度確認してファイルを開く方法をご説明しました。もし、そのファイルが既に開かれていたら?エラーになってしまいます。今回はすでに開かれていた場合は、 VBA 処理を中断する方法をご説明します。
エラーコードで無視・回避する方法以外でファイルをコントロールする
ファイル名・ファイルパスを取得して指定ファイルが開かれているか判断する
Sub FileOpenCheck()
DIm OpenFile As Variant
Dim Count As Long
Dim FilePath As String
Dim FileName As String
OpenFile = Application.GetOpenFilename("Microsoft Excel ブック, *.xlsx")
Count = InStrRev(OpenFile, "\") '---(1)
FilePath = Left(OpenFile, Count) '---(2)
FileName = Mid(OpenFile, Count + 1) '---(3)
Dim wb As Workbook
For Each wb In Workbooks '---(4)
If wb.Name = FileName Then '---(5)
MsgBox FileName & "はすでに開いています。" & FileName & "を閉じてから再度実行して下さい。
Exit Sub
End If
Next wb
Dim OpenBook As Workbook
Set OpenBook =Workbooks.Open(OpenFile) '---(6)
ThisWorkbook.Activate
End Sub
既に開いているファイルのチェック(2重オープン)だけでなく、InStrRev関数を応用した、ファイル名やファイルパスを取得する場面があれば活用してください。