特定のパス上にあるファイルを読み込むとき、或いはそこに保存する時のお話。
昔はよく、標準モジュールにこう書いていた。
Const FolderPath As String = "C:\Temp"
これでも全然構わないのだが、一つ大きな難点がある。
それは、このマクロを自分以外の人が使う場合であって、且つ、このFolderPathが変更になった際に、必ず私に修正依頼が掛かる点だ。
「ファイルの保管場所を変えたら、マクロを動かなくなった」
よく聞く話だ。人によっては、VBEを開いて修正が出来ない方も居られる。
ということで最近はパスをシートに記載し、VBAに詳しくない方でも問題なく
独力でメンテナンスできるよう心がけている。こんな感じだ。

行列の挿入にも耐えらるよう、セルに名前をつけておく場合も多い。

すると、このようになる。パスの管理をシート側に委ねたため、VBAを知らなくてもパスの変更が可能だ。
Sub Hoge() Dim FolderPath As String FolderPath = Sheet1.Range("保存先") End Sub
複数のプロシージャでこのパスを利用する場合、シートモジュールでプロパティとして値を取得する方法も有る。
Public Property Get FolderPath() As String FolderPath = Me.Range("保存先") End Property
すると、標準モジュール側がスッキリするし、複数個所からの再利用が可能になる。

意図せず、パスの指定を間違えることもあるだろう。その場合は、取り敢えずの
パスに切り替えることも可能だ。
Public Property Get FolderPath() As String Dim FSO As Object Set FSO = CreateObject("Scripting.FileSystemObject") FolderPath = Me.Range("保存先") ' FolderPathに格納したパスが存在しない場合、 ' このマクロブックが保存されているパスに置き換える。 If FSO.FolderExists(FolderPath) = False Then FolderPath = ThisWorkbook.Path End If End Property
他にも「False」を返すなど、方法は幾つもあると思われ。
いずれの処理とするかは、各自の時と場合とお好みで。
参考まで。