ファイルが既に開いているか調べてファイルを開く

ファイルが既に開かれているか調べてファイルを開く Excel VBA For Each…Next

ファイルを開く場合に既に指定ファイルが開いていると「○○○.xlsxは既に開いています。2重に開くと、これまでの変更内容は破棄されます。○○○.xlsxを開きますか?」というエラーメッセージが表示されます。

仕事で複数のエクセルのファイルを開いて作業していると現在どのファイルを開いているか把握するのが難しくなって、開いているファイルを検索してエラーメッセージを出してしまう事があります。

そのため事前にファイルが開いているか調べるコードをプログラムに組み込んでおけばエラーメッセージを出さないように作業ができるかと思います。

Sub ファイルの検索()

Dim name As String
name = Range("A1").Value 'A1セル値(ファイル名)を変数nameに格納します。

Dim ブック As Workbook
Dim Flag As Boolean

For Each ブック In Workbooks '検索したファイルが開いているか調べます。

If ブック.name = name & ".xlsx" Then Flag = True

Next ブック

If Flag = True Then '検索したファイルが開いていた場合の処理。

Workbooks(name & ".xlsx").Activate '開いていたファイルを最前面に表示します。

Exit Sub

Else '検索したファイルが開いていない場合はファイルを開きます。

Workbooks.Open Filename:=ThisWorkbook.Path & "\フォルダ\" & name & ".xlsx" 'ファイルを開きます。

End If

End Sub

Workbooks.Openの前にファイルがフォルダ内にあるか調べるIf Dir(ThisWorkbook.Path & “\フォルダ\” & name & “.xlsx”) <> “” Then のコードを書いておけばファイルがフォルダ内に無かったときの対策になります。

ThisWorkbook.Pathでファイルの保存場所を自動取得取得しているのでマクロを実行するファイル(ファイル検索.xlsm)と同じ場所にファイルを検索する(📁フォルダ)を置いてその中に検索するファイルを保存しておけばどの場所でもファイルパスを考えずにマクロの実行することができます。

コメント