ここから本文です

エクセルのVBAで変数とワイルドカードを用いたファイル指定について教えてください...

sun********さん

2010/4/2317:10:41

エクセルのVBAで変数とワイルドカードを用いたファイル指定について教えてください。

「変数に代入された文字列の含まれているファイル名を、ワイルドカードと一緒に指定して開きたいです。」
・変数"NAME"には氏名が代入されている。
・指定したいファイル名は、「氏名2010年○月_勤務表.xls」
・指定フォルダに対象ファイルは1つしか存在しないという前提。

Dim NAME As String

NAME = Range("C5")

Workbooks.Open("C\:フォルダA" & NAME & "勤務表.xls")

変数"NAME"と"勤務表.xls"の間の文字列は"*"のようなワイルドカードを使用したいのですが、そのような指定方法は可能でしょうか?

よろしくお願いします。

補足回答ありがとうございます。
誠に申し訳ありませんが、なにゆえ素人ですので回答内容がよく分かりませんでした。

Workbooks.Open("C\:フォルダA" & NAME & "*勤務表.xls")

上記のように直接"*"を下記込んでしまうと文字"*"として扱われるためこの記述は駄目ということでしょうか?
「free_ga_eeeee」さんの回答どおりフォルダパス+ファイル名を一度変数に代入しなければならないということでしょうか?

御手数ですがよろしくです。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
40,881
回答数:
1

違反報告

ベストアンサーに選ばれた回答

fre********さん

編集あり2010/4/2613:35:19

[補足について]
その通りです。Workbooks.Openメソッドの引数にワイルドカードは
使用できません。そのため、別の関数を用いてファイル名を取得する
必要があります。

変数に代入している理由は、条件に該当するファイル名が
見つからない場合の処理を考慮してです。
常にファイルがあるので、変数を用いたくない場合は、

Workbooks.Open("C:\フォルダA\" & Dir$("C:\フォルダA\" & NAME & "*勤務表.xls"))
になります。

*Dir関数の戻り値は、条件に該当するファイル名
__下では、第二引数を指定していますが省略可能なので今回は書いてません。
*Workbooks.Openメソッドの引数は、ファイルパス(フォルダ+ファイル名)

> 変数"NAME"と"勤務表.xls"の間の文字列は"*"のような・・・
可能です。

Dir$("C\:フォルダA\" & NAME & "*勤務表.xls", vbNormal)と
指定すれば、条件に該当するファイル名が取得できます。

例えば、以下の通り

Const FOLDER_PATH As String = "C\:フォルダA"
Dim NAME As String, FILENAME As String

NAME = Range("C5").Value
FILENAME = Dir$(FOLDER_PATH & "\" & NAME & "*勤務表.xls", vbNormal)
IF FILENAME <> "" Then
Workbooks.Open(FOLDER_PATH & "\" & FILENAME)

・・・・
End If

質問した人からのコメント

2010/4/26 15:32:59

降参 度重なる質問に分かりやすく早急に回答いただきありがとうございました。
また機会がありましたら宜しくお願いします。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる