目次

問題

新規ブックを作ってマクロを書いていたところ、 ActiveWorkbook.Path が取得できない。 Ctrl + Space で表示される入力候補の中から ActiveWorkbook を選んで、 ドット( . )を入れて、 更に出てくる入力候補から Path プロパティを選んでいるのでコードは間違っていないはず。

しかし、 Msgbox 関数、 Debug.Print メソッドで表示した ActiveWorkbook.Path の結果は空白のまま。

ExcelVBA のコード :

Sub アクティブワークブックパス取得()
MsgBox ActiveWorkbook.Path 'ワークブックの保存されている場所が表示さるはずでした。
End Sub

Msgbox 関数の実行結果 :

なぜか空白です。
なぜか空白です。

目次まで戻る

解決

原因は早々にわかりました。それは、新規ブックを未保存で実行していたためでした。新規ブックを保存後に、 ActiveWorkbook.Path を実行すると正常に表示されました。

未保存のワークブック
未保存のワークブック

新規ブックを未保存の場合で、 Msgbox 関数を実行すると、空白というのか文字としては、何もありませんでした。

なぜか空白です。
なぜか空白です。

ワークブックをデスクトップに保存してみます。

保存済みのワークブック
保存済みのワークブック

そして、再度 Msgbox 関数を実行してみます。そうすと、今度は、 ActiveWorkbook.Path が表示されています。

保存した場所が表示されています。
保存した場所が表示されています。

目次まで戻る

もう一つのエラー

もう一つエラーの原因があるかもしれません。それは、以下のコードのように Path プロパティを返す宛というか先がない場合です。上記の最初のコードのように Msgbox に結果を返すとか、 a = の式のようにして、 a に結果返すとすれば良いのだと思います。

ExcelVBA のコード :

Sub アクティブワークブックパス取得_02()
ActiveWorkbook.Path 'エラーになります。
End Sub
Visual Basic Editor のスクリーンショット。もう一つのエラー。
Visual Basic Editor のスクリーンショット。もう一つのエラー。

この場合はとりあえず、 a = ActiveWorkbook.Path のような式になっていれば、エラーにはならないようです。

ExcelVBA のコード :

Sub アクティブワークブックパス取得_03()
a = ActiveWorkbook.Path 'とりあえずエラーにはなりません。変数 a に Path の結果が入っているので、この後の処理で使用することもできます。
End Sub

目次まで戻る

参考情報

MSDN

目次まで戻る

あとがき

原因が全く分からないまま、 Excel 、パソコンの再起動をかけてみたりしていました。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿