VBA カレントディレクトリの取得と設定・変更|Excel VBA

2018/02/28


今回は VBAで カレントディレクトリ(フォルダ)名 を取得したり、設定(指定)したり変更(移動)したりする方法について解説します。

CurDir関数ChDirステートメント などの使い方についても触れていきます。

じつは、カレントフォルダ については過去記事のなかで 触れたことがあります。
「カレントフォルダとは?」と思った方は そちら からご覧ください。

カレントディレクトリを取得する

CurDir関数

CurDir関数 とは、カレントディレクトリのパスを文字列で返してくれる関数です。
CurDir = Current Directory (カレントディレクトリ)

Sub Show_CurDir()
  MsgBox CurDir
End Sub

これをExcel VBAで実行すると;

メッセージボックスにカレントフォルダのパスが表示されます。
※プロファイルフォルダ名の部分にはモザイク入れてます


CurDirの引数

CurDir関数についてもう少し掘り下げると、上に書いた CurDir は引数が省略されています。

CurDir ( [drive] )

これが構文としては正確な表記で、引数driveは省略可能ですが、引数 [drive] にはドライブを示す文字列式を指定します。

CurDir ( "D" )

こんな感じで。
これは、Dドライブのカレントディレクトリのパスを返します。

フォルダとディレクトリの違い

「フォルダ」と「ディレクトリ」の違いについても触れておきますが、基本的に同じです。

MS-DOSやUnixの世界では「ディレクトリ」という呼び名が主流です。
MacやWindowsの登場によって「フォルダ」という表現にとって代わられてきました。



カレントディレクトリを指定・変更する

VBAで必要とされるのは、むしろカレントディレクトリを任意のディレクトリ(フォルダ)に指定・変更する方法ではないでしょうか。
こんなときに役に立つのが、ChDirステートメント です。

ChDirステートメント

ChDirステートメントとは、カレントディレクトリを変更するステートメントです。

Sub Chg_CurDir()
  ChDir "C:¥test"
End Sub

上のサンプルは、カレントディレクトリをCドライブの test フォルダに変更するステートメントです。

ChDir の後には引数として任意のパスを指定します。
サンプルの引数は、"C:¥test" なのでCドライブのカレントフォルダが変更になりますが、Dドライブなど他のドライブのカレントフォルダへの影響はありません。

関連記事



併せて読んでおくとさらに便利

VBA [ファイルを開く] ダイアログボックスを表示させる|EXCEL VBA
VBA・ダイアログボックス
VBAで [ファイルを開く] ダイアログ ボックスを表示させ、選択したファイル名をテキストボックスに表示させるまでを解説。GetOpenFilenameメソッドを、使用例もサンプルコードを公開しています。

VBA フォルダ内のファイル名一覧の取得|EXCEL VBA
VBA・一覧取得
VBAでフォルダ内のファイル名の一覧を取得する方法を解説。フォルダの中の複数ファイルを自動でひとつずつ展開しながら 連続処理をさせたいときに使える超便利テク!

VBAで空白行を削除する方法|Excel VBA 高速技
VBA・Unionメソッド
VBAを使って空白行の削除方法を解説します。Unionメソッド を使用して空白行を高速で一括削除する方法をサンプルコード付きで解説。ぜひ参考にしてください。

VBAでシート数を取得する方法と そこからできること|Excel VBA
VBA・Countプロパティ
VBAでシート数を取得する方法の解説。VBAを使って各シートに同じ作業をさせる場合は流動的に変化するシート数を取得しておく必要があります。Countプロパティを使って...

VBA「フォルダ選択」ダイアログを表示させる|Excel VBA
VBA・ダイアログボックス
VBAを使って「フォルダ選択」をさせる ダイアログボックス を表示させ、ユーザーが選択した フォルダ名 を含むPathを テキストボックスに表示させる方法について解説します。

VBAでパスワード入力フォームを作ってみました|Excel VBA
VBA・ユーザーフォーム
『VBAでパスワード入力フォームを作る方法』。ユーザーにパスワードを入力させたい状況に出くわしたら、自分で「パスワード入力フォーム」を作るのがベストです。

※その他関連記事は、このページの下の方にもあります。

-EXCEL&VBA
-, ,

シェアしていただけると助かります。