【Excel VBA】カレントディレクトリがドキュメントになってしまう原因はこれだった

当ページのリンクには広告が含まれています。

↑この記事を書いている時にCurDir関数を使ってカレントディレクトリパスを取得しようとしたら、なぜかドキュメントパスが参照されました。

原因だけ知りたい方は「カレントディレクトリが変なのはExcelの仕様らしい」をクリック!

目次

カレントディレクトリとは?

カレントディレクトリというのは、ざっくりいえば今作業しているファイルがどこにあるかを示す住所みたいなものです。

上の図では、デスクトップ内にある「【Excel VBA】日報」というフォルダ内にマクロ実行ファイル「日報作成マクロ」が格納されています。

「日報作成マクロ」ブックのカレントディレクトリは、パスで表記すると

“C:\Users\mameg\Desktop\【Excel VBA】日報”

となります。

ブックのカレントディレクトリを調べる

ということで、実際に「日報作成マクロ」ブックのカレントディレクトリを調べてみます。

「日報作成マクロ」ブックに下記のコードを実行してみます。

これはカレントディレクトリをイミディエイトウィンドウに表示してくれるコードです。

さて結果は…

んー…バグってますかね?

カレントディレクトリが変なのはExcelの仕様らしい

この結果を初めてみたとき、自分のカレントディレクトリの解釈がおかしいのかと疑いました。

しかし色々ネットで調べてみたところ、どうやらExcelのカレントディレクトリはドキュメントがデフォルトになっているとのこと。

そのため、マクロを実行しているブックをドキュメント以外に格納してもカレントディレクトリはドキュメントになってしまうみたいです。

ちなみにデフォルトのカレントディレクトリは「Excelのオプション」→「保存」→「既定のローカルファイルの保存場所」で確認できます。

VBAでカレントディレクトリパスを取得する方法

CurDirではなくThisWorkbook.Pathと記述すればマクロを実行しているブックのカレントディレクトリパスが取得できます。

「日報作成マクロ」ブックにさっきのコードを修正して実行してみます。

さて、結果は…

あーよかった。

  • URLをコピーしました!

この記事を書いた人

データ入力のバイトでご飯食べてます。めんどくさがりなので実務でちまちまマクロ組んでます。学生時代にMOS Excel2010 Expert やExcel VBA ベーシックなどオフィス系の検定試験を取得 。MOS日本学生大会2012ワードで金賞。

コメント

コメントする

目次