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
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
管理簿.xlsmファイルは実在しますか?拡張子がxlsxだったりxlsだったりしませんか?
'Pathで\記号を連結する場合は、.を前置すると良いですよ。
strBookName = Dir(strPath & ".\" & ActiveWorkbook.Name) 'ファイル名を取得する試験
で動作するはずですよね。
> strPath = ActiveWorkbook.Path
は、想定どおりの値を取得できてますか?MsgBoxか、Debug.Printで確認できます。
ファイルも実在し、MsgBoxでパスの名前もファイル名も確認したところ、
ちゃんと、パスもファイル名も持ってきていましたが、
やはり、エラーになってしまい、
原因がよくわからないので、
直接フルパスを書き込む方法に変更しました。
回答ありがとうございました。またよろしくお願いします。
No.2
- 回答日時:
こんにちは。
お邪魔します。ちょっと気になっていたのですが、
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"
などに代えて試してみては如何でしょう。
> ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると
> 取得できるようになるのですが、
元コードについては、
実行する度に、アクティブなブックが異なっていたとして
それぞれが異なるフォルダにあるブックだった場合に、
見かけ上、同じような現象が再現できますので、
その確認、ということです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
VBA データ(特定値)のある最終行を取得したい
Excel(エクセル)
-
-
4
ThisWorkbook.Pathを実行するとエラーが発生する修復方法を教えてほしい
Excel(エクセル)
-
5
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
データ数をカウントしたいのですが
-
count(*)で取得した値をJAVAの...
-
VBAでActiveDirectoryのユーザ...
-
Flexgridで選択行の列の値を取...
-
ListView 項目の選択/選択解除...
-
リストビュー:先頭行のアイテ...
-
時間を分に変換するプログラム
-
ドロップダウンリストの初期表...
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
getParameter と getAttribut...
-
asp.netでtextboxの値を取得
-
ListViewで複数選択された項目...
-
imgctl.dllを使って読み込んだ...
-
VB6.0のレジストリ情報取得方法
-
Google Apps Script で、Web上...
-
利用者側のMACアドレスを取得し...
-
.NETで現在時刻を常に動作させ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
コンボボックスの表示は最大何行?
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
おすすめ情報