VBAで自動化

【VBA】カレントディレクトリ(現在のフォルダパス)取得・変更方法

現在の作業ディレクトリを指すもので、このディレクトリはVBAマクロが実行される際の当然のファイルパスとして示します。これは相対的な参照の基点となる位置です。

そもそもディレクトリとは

コンピュータのファイルシステム上でファイルや他のフォルダを入れている整理された場所でコンテナのようなものをディレクトリといいます。ディレクトリは、ファイルやサブディレクトリ(フォルダの中のフォルダの事)を確保することができます。

ディレクトリの基本的な情報と特徴

  1. 交渉的構造: ディレクトリは他のディレクトリの中に作成することができて、ファイルシステム上で権限的な構造を形成します。ディレクトリの中にディレクトリがある場合ですが、例えば、DocumentsにPicturesさらにVacationというディレクトリがある場合、この構造はDocuments\Pictures\Vacationとして表現されます。
  2. パス: ディレクトリの場所は、ルートからそのディレクトリまでの道筋を構造的に表現するパスで示されます。Windows では、このパスはバックスラッシュで開始され、UNIX や Linux ではスラッシュで開始されます。
  3. ルートディレクトリ:ディレクトリの優先の最上位にあるディレクトリです。すべてのディレクトリとファイルは、このルートディレクトリの下に存在します。
  4. ホームディレクトリ:ユーザーごとに指定された専用のディレクトリです。UNIX や Linux のシステムでは、各ユーザーに自分のホームディレクトリが存在します。つまりディレクトリ(またはフォルダー)は、ファイルや情報を整理し、関連する項目を一元化して保存するための基本的な仕組みです。

カレントディレクトリの取得・変更するサンプルコード

カレントディレクトリの取得

CurDir関数を使用します。

この関数はExcel VBA において現在の作業ディレクトリ(カレントディレクトリ)を返すための関数です。任意でドライブレター(コロン(:)が続く形式の「C:」や「D:」などのこと)を指定することができ、そのドライブのカレントディレクトリを取得することができます。

Dim currentDir As String
currentDir = CurDir
MsgBox currentDir

カレントディレクトリの変更

「""」に任意のカレントディレクトリを変更して使用できます。
ChDir "C:\NewDirectory\"

カレントディレクトリの使用上の注意点

ExcelのVBA環境でのカレントディレクトリは、VBAエディタを開いたときや特定のVBAプロジェクトを開始するときのディレクトリに設定されることが多いです。
注意として、VBAでファイルやディレクトリの操作を行う際に絶対パスを使うことをおすすめします。これは、カレントディレクトリが思わぬ場所に設定されている場合や、後からコードを設定した場合に予期せぬエラーや誤操作が起こる可能性があるからです。

-VBAで自動化