Excel

ファイル を 指定して開く ③【Excel VBA 】

k.w

ファイル を 指定して開く 方法は、①ファイル名保存先を固定して開く方法と、②都度確認してファイルを開く方法をご説明しました。もし、そのファイルが既に開かれていたら?エラーになってしまいます。今回はすでに開かれていた場合は、 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

  • (1)ファイルパスには必ず区切り(\)があり最後の区切りの前後でファイル名・ファイルパスが分離できます。そのため\の数をカウントします。
  • (2)最後の区切りの文字数までの左側をファイルパス
  • (3)最後の区切りの文字数の次(プラス1)から始まる文字列をファイル名
  • (4)現在開いているファイルをwbとする。
  • (5)ファイル指定表示したファイル名と(4)を比較する。
  • (6)問題なければ開いたファイルをアクティブにする。

既に開いているファイルのチェック(2重オープン)だけでなく、InStrRev関数を応用した、ファイル名やファイルパスを取得する場面があれば活用してください。

ABOUT ME
記事URLをコピーしました