目次
問題
新規ブックを作ってマクロを書いていたところ、 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
この場合はとりあえず、 a = ActiveWorkbook.Path のような式になっていれば、エラーにはならないようです。
ExcelVBA のコード :
Sub アクティブワークブックパス取得_03()
a = ActiveWorkbook.Path 'とりあえずエラーにはなりません。変数 a に Path の結果が入っているので、この後の処理で使用することもできます。
End Sub
参考情報
MSDN
- Workbook.Path プロパティ (Excel)
- MsgBox 関数 - https://msdn.microsoft.com/ja-jp/library/office/gg251821.aspx
- Print メソッド - https://msdn.microsoft.com/ja-jp/library/office/gg264286.aspx
あとがき
原因が全く分からないまま、 Excel 、パソコンの再起動をかけてみたりしていました。
以上、閲覧ありがとうございました。