- 締切済み
ActiveWorkbook.Path取得できない
ActiveWorkbook.Pathでパス名を取得して、 同じフォルダ内の別のエクセルシートを開きたいのですが、 見つかりませんと、エラーになります。 ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると 取得できるようになるのですが、 すべて閉じて、再度実行すると、また取得できなくなるという現象が起こっているのですが 毎回上書き保存するわけにいかない為 何かよい方法はありますでしょうか? ----------------------------------- Dim strPath As String Dim strBookName As String strPath = ActiveWorkbook.Path strBookName = Dir(strPath & "\管理簿.xlsm") 'ファイル名取得 On Error GoTo myError Workbooks.Open FileName:=strBookName
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。お邪魔します。 ちょっと気になっていたのですが、 ActiveWorkbook と Dir()関数 の使い方は意図に合っているものでしょうか。 ThisWorkbook に換えて、Dir()関数にワイルドカード付けてみたら、 よく見かけるニーズの多い記述だったりするのですけれど。 とりあえず、自Bookの在るフォルダにある".xlsm"ファイルを 総なめにしてイミディエイトウィンドウ (VBE画面から、Ctrl + G キーを押すとアクティブになるウィンドウのことです) に表示するものを揚げてみます。 一度、確認した方がよいかと思いましたので。 Sub Re7742919chk() Dim strPath As String Dim strPathName As String Dim strBookName As String strPath = ThisWorkbook.Path strPathName = strPath & "\*.xlsm" strBookName = Dir(strPathName) Debug.Print strPathName: Debug.Print , strBookName Do While strBookName <> "" Debug.Print , strBookName strBookName = Dir() Loop End Sub 次いで、 strPathName = strPath & "\*.xlsm" を、 strPathName = strPath & "\管理簿*.xlsm" strPathName = strPath & "\*管理簿.xlsm" strPathName = strPath & "\*管理簿*.xlsm" などに代えて試してみては如何でしょう。 > ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると > 取得できるようになるのですが、 元コードについては、 実行する度に、アクティブなブックが異なっていたとして それぞれが異なるフォルダにあるブックだった場合に、 見かけ上、同じような現象が再現できますので、 その確認、ということです。
- bin-chan
- ベストアンサー率33% (1403/4213)
管理簿.xlsmファイルは実在しますか?拡張子がxlsxだったりxlsだったりしませんか? 'Pathで\記号を連結する場合は、.を前置すると良いですよ。 strBookName = Dir(strPath & ".\" & ActiveWorkbook.Name) 'ファイル名を取得する試験 で動作するはずですよね。 > strPath = ActiveWorkbook.Path は、想定どおりの値を取得できてますか?MsgBoxか、Debug.Printで確認できます。
お礼
ファイルも実在し、MsgBoxでパスの名前もファイル名も確認したところ、 ちゃんと、パスもファイル名も持ってきていましたが、 やはり、エラーになってしまい、 原因がよくわからないので、 直接フルパスを書き込む方法に変更しました。 回答ありがとうございました。またよろしくお願いします。