VBAを使用する際に、ワイルドカードを使用してWorkbookを指定することで、以下のコードは正常に動作しますか?Aのブックには、通常日付が含まれており、「A_20230808」などの形式が続いていると予想されますが、そのような場合にはどうすればよいですか?

はい、ワイルドカードを使用して特定のパターンに一致するWorkbookを指定することは可能です。例えば、以下のようなコードを使用することができます。

“`vba
Dim wb As Workbook
Dim filename As String

filename = “A_20230808” ‘ ワイルドカードを含まない部分を指定する

‘ ワイルドカードを含むブック名を取得する
For Each wb In Workbooks
If wb.Name Like filename & “*” Then
‘ ブックが見つかった場合の処理
‘ ここで何らかの操作を行う
End If
Next wb
“`

上記のコードでは、指定したパターン(”A_20230808″のような形式)に一致するWorkbookが見つかると、そのWorkbookに対して特定の操作を行います。

もし特定のパターンに一致するWorkbookが存在しない場合、コードは何も実行しません。その場合、コードの後にエラーハンドリングを追加することで、存在しないWorkbookに対するエラーをハンドリングすることができます。

一方で、もしワイルドカードが含まれるブック名を事前に予測することができない場合、そのブック名を取得するためには別の方法が必要です。例えば、ファイル名を指定してファイルを検索する関数を使用することができます。以下に例を示します。

“`vba
Dim wb As Workbook
Dim filename As String

filename = “A_*.xlsx” ‘ ワイルドカードを含むファイル名のパターンを指定する

‘ ファイル名に一致するブックを取得する
filename = Dir(“C:PathToFolder” & filename) ‘ フォルダのパスを指定する

While filename “”
Set wb = Workbooks.Open(“C:PathToFolder” & filename)
‘ ブックが見つかった場合の処理
‘ ここで何らかの操作を行う

filename = Dir ‘ 次のファイル名を取得する
Wend
“`

上記のコードでは、指定したフォルダに存在するファイル名の中から、指定したパターン(”A_*.xlsx”のような形式)に一致するファイル名を探し、そのファイルを順番に開いて操作します。

ただし、こちらの方法では対象のフォルダ内に存在する全てのファイルをチェックするため、パフォーマンスの低下や意図しないファイルを誤って処理するリスクがあることに注意してください。必要に応じてその他の条件(例えば、ファイルの作成日時や更新日時など)を追加することで、対象のファイルを絞り込むこともできます。

コメントを残す