
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.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"
などに代えて試してみては如何でしょう。
> ただしそのエクセルを直接開いて名前を付けて同名で上書き保存をすると
> 取得できるようになるのですが、
元コードについては、
実行する度に、アクティブなブックが異なっていたとして
それぞれが異なるフォルダにあるブックだった場合に、
見かけ上、同じような現象が再現できますので、
その確認、ということです。
No.1
- 回答日時:
管理簿.xlsmファイルは実在しますか?拡張子がxlsxだったりxlsだったりしませんか?
'Pathで\記号を連結する場合は、.を前置すると良いですよ。
strBookName = Dir(strPath & ".\" & ActiveWorkbook.Name) 'ファイル名を取得する試験
で動作するはずですよね。
> strPath = ActiveWorkbook.Path
は、想定どおりの値を取得できてますか?MsgBoxか、Debug.Printで確認できます。
ファイルも実在し、MsgBoxでパスの名前もファイル名も確認したところ、
ちゃんと、パスもファイル名も持ってきていましたが、
やはり、エラーになってしまい、
原因がよくわからないので、
直接フルパスを書き込む方法に変更しました。
回答ありがとうございました。またよろしくお願いします。
お探しの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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
ListView 項目の選択/選択解除...
-
VBAでActiveDirectoryのユーザ...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
DataGridView 複数選択で行番...
-
VBA:小数点以下の数字を取得で...
-
PHP8でWarning:Undefined varia...
-
like演算子内に変数って使えな...
-
C#でネットワーク(LAN)上のPC...
-
自動的に高さ指定していないt...
-
outlookでメールのフォルダパス...
-
ASPでユーザのグループ名取得
-
リストビュー:先頭行のアイテ...
-
NTPサーバから時刻を取得する
-
URIでのページの移動について
-
VBA リストボックス内の値を複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
Spreadの選択行の取得について
-
PHP8でWarning:Undefined varia...
-
Flexgridで選択行の列の値を取...
-
count(*)で取得した値をJAVAの...
-
VBA Shapesの座標からセル位置...
-
データ数をカウントしたいのですが
-
JavaScriptにおいてコンピュー...
-
利用者側のMACアドレスを取得し...
-
VBA リストボックス内の値を複...
-
like演算子内に変数って使えな...
-
EXCELのリストボックスを選択し...
-
「Excel VBA」 Webクエリ マク...
-
JavaScriptでWindowsログオンID...
-
gethostbyaddrでのホスト名取得...
-
現在時刻をミリ秒まで取得
-
vbaで、オートシェイプ文字幅と...
おすすめ情報