VBAでファイルパスを取得して何らかの処理を行いたいときがありますがGetOpenFileNameを利用することにより、 任意のファイルのパスを取得することができます。
Application.GetOpenFilename メソッド (Excel) | Microsoft Learn
C:\GetOpenFileNameTestに4つのファイルを置きました。

各ファイルのパスを取得して、Sheet1のB2セルからB5セルまで記入してみます。

ファイルのパスを取得するGetFilePath関数です。
Option Explicit
Function GetFilePath(Optional file_type As String = "") As String
'###################################################################################
'ファイル選択ダイアログを開き、選択したファイルの絶対パスをリターンする
'-----------------------------------------------------------------------------------
'引数 :ファイル選択ダイアログで選択できるファイルの種類
' 引数を省略すると"すべてのファイル (*.*),*.*"
' Excelの場合:"Microsoft Excelブック,*.xls?;*.xlsx;*.xlsm"
' Accessの場合:"Accessファイル,*.accdb?;*.mdb"
' CSV,TSVの場合:"CSV TSVファイル,*.csv?;*.tsv"
'戻り値:選択したファイルの絶対パス
'###################################################################################
Dim filePath As String
filePath = Application.GetOpenFilename(file_type)
If filePath <> "False" Then
GetFilePath = filePath
End If
End Function</pre>
GetFilePathの引数に渡す文字列を変更することによって特定のファイル拡張子のみ ファイル選択画面に表示することができます。
GetFilePathを以下のコードでテストしてみます。
Option Explicit
Sub TestGetFilePath()
'ファイルパスを記載するシートオブジェクトを指定
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Sheet1")
'B2セルに拡張子を指定しないでファイルパスを取得
sht.Range("B2") = GetFilePath()
'B3セルにExcelファイルの拡張子を指定してファイルパスを取得
sht.Range("B3") = GetFilePath("Microsoft Excelブック,*.xls?;*.xlsx;*.xlsm")
'B4セルにAccessファイルの拡張子を指定してファイルパスを取得
sht.Range("B4") = GetFilePath("Accessファイル,*.accdb?;*.mdb")
'B5セルにCSV・TSVファイルの拡張子を指定してファイルパスを取得
sht.Range("B5") = GetFilePath("CSV TSVファイル,*.csv?;*.tsv")
Set sht = Nothing
End Sub
TestGetFilePathの拡張子を指定しないコードが実行されます。
すべてのファイル(*.*)と表示されますので、test.txtを選択してみます。
Excelファイルの拡張子を指定したコードが実行されます。
Excelファイルのみ選択画面に表示されるので、test.xlsxを選択します。
Accessファイルの拡張子を指定したコードが実行されます。
Accessファイルのみ選択画面に表示されるので、test.accdbを選択します。
CSV・TSVファイルの拡張子を指定したコードが実行されます。
CSV・TSVファイルのみ選択画面に表示されるので、test.csvを選択します。
各ファイルのパスを取得し、Sheet1のB2セルからB5セルに表示できました。