ファイルを検索して開くときフォルダまでのファイルパスをThisWorkbook.Pathで自動取得する

Excel VBA ThisWorkbook.Path

VBAでファイルを検索して開くプログラムを作成して同僚に”これ使ってみて”と渡したところ、次の日に”マクロを実行すると「実行時エラー’1004′:」のエラーメッセージで止まって動かなかったよ”と言われた経験はありませんか。

この原因は自分のパソコンと同僚のパソコンの「C:\からフォルダ」までのファイルパスに違いがあるためです、ファイルパスのことを考えずにプログラムを組むには下のプログラムのようにファイルを開くところでThisWorkbook.Pathを使ってください。

ファイルを検索するフォルダとマクロを実行するファイルを同じフォルダに入れるとフォルダまでのパスをThisWorkbook.Pathで自動で取得することができます。

同じフォルダに入れられない場合はThisWorkbook.Pathは使わずに検索するフォルダを右クリック → プロパティでファイルパスを調べてWorkbooks.Open Filename:= の後に書き込むのが良いかと思います。

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

コメント