プロが教えるわが家の防犯対策術!

以下のところでファイル名にワイルドカードを使用することはできないでしょうか。
202104*.xlsmのようにしたいです。

Dim wb As Workbook

Set wb= Workbooks("20210419.xlsm")

'MsgBox wb.Name , vbInformation

A 回答 (3件)

こんな感じではどうでしょうか?


a = ThisWorkbook.Path
b = Dir(a & "\" & "202104*.xlsm")
i = 0
Do While b <> ""
Debug.Print a & "\" & b
i = i + 1
b = Dir()
Loop
    • good
    • 0
この回答へのお礼

回答ありがとうございます。以下のようにしてみると実行時エラー'9'が出ました。インデックスが有効範囲内にないと言われたのですが、どこがまずいのでしょうか。

Dim i As Integer
Dim b As String


b = Dir(a & "\" & "20210419*.xlsm")
i = 0
Do While b <> ""
Debug.Print a & "\" & b
i = i + 1
b = Dir()
Loop



Set wb = Workbooks(buf)

お礼日時:2021/04/22 08:41

ワイルドカードをって言っても結局



>Workbooks("20210419.xlsm")

特定のBookを選択する訳ですよね?
その選択条件はどのようにルール化されているのか?が問題なのでは。

例えば

>202104*.xlsm

に当てはまるBook全てに対してならまだしも、その中から更に絞り込むってならそれは確実に限定した1個のファイル名を持つBookになってしまいますし。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。202104*.xlsmにあてはまるマクロファイルはたった1つしかないのでそれを選択したいのですが、難しいでしょうか。

お礼日時:2021/04/22 07:51

全部書くとこうですね。



Dim wb As Workbook
Dim i As Integer
Dim a As String
Dim b As String

a = ThisWorkbook.Path
b = Dir(a & "\" & "202104*.xlsx")
i = 0
Do While b <> ""
MsgBox a & "\" & b & " を開きます"
Set wb = Workbooks.Open(a & "\" & b)
i = i + 1
b = Dir()
Loop
    • good
    • 1
この回答へのお礼

ありがとうございます。無事解決しました!!

お礼日時:2021/04/22 13:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A