ここから本文です

Excel VBA:フォルダパスの取得がうまくいきません。

rir********さん

2009/9/2914:48:11

Excel VBA:フォルダパスの取得がうまくいきません。

VBA独学中の初心者です。
「任意のフォルダを選択して、フォルダ内全てのファイルに処理を実施」という処理を行いたいのですが・・・
いろいろ調べて下記にしてみたのですが、フォルダ内のファイルを1つも認識せずに、終了してしまいます。

Sub test()

Dim Mypath As String
Dim MyFile As String
Dim Wb2 As Workbook

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
MyPath = .SelectedItems(1)
MyFile = Dir(MyPath & "*.xls")

Do While MyFile <> ""
Set Wb2 = Workbooks.Open(MyPath & MyFile)

==この間に、全ファイルに行いたい処理を記述==

Loop
End If
End With
End Sub

・ MyPathにフォルダパスを直接入れれば正常に動作
・ 取得したMyPathをMsgboxで表示すると、正しく表示される
ので、MyPathとMyFileの合体?が上手く行っていない気がするのですが・・・

お分かりになる方、御教授願います。

補足回答ありがとうございます!
MyPathに直接フォルダパスを入れていた時は「\」までパスに含めていたので、
MyFile = Dir(MyPath & "*.xls")で大丈夫だったようです。

教えていただいた通り「\*.xls」としたところ、何故かエラーになってしまい、
Set Wb2 = Workbooks.Open(MyFile)に変更したところ正常に動きました!
直接フォルダパスを入れた場合は、Open(MyPath & MyFile)にしないと逆にエラーになるのですが、何故なのでしょう・・

閲覧数:
6,637
回答数:
1
お礼:
100枚

違反報告

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

roc********さん

編集あり2009/9/2916:11:22

パス区切り文字「\」が抜けているだけだと思います。

MyFile = Dir(Mypath & "\*.xls")

-----------------------補足に対する回答-----------------------------
>教えていただいた通り「\*.xls」としたところ、何故かエラーになってしまい、
>Set Wb2 = Workbooks.Open(MyFile)に変更したところ正常に動きました!

あ、失礼しました。そこにも「\」が必要なのですよ。
Set Wb2 = Workbooks.Open(Mypath & "\" & MyFile)
最初にMyPath = .SelectedItems(1) & "\" としたほうがスマートかも。

>直接フォルダパスを入れた場合は、Open(MyPath & MyFile)にしないと逆にエラーになるのですが、何故なのでしょう・・
これは判りません。フォルダパスは同じ場所ですか?
エラーメッセージは何ですか?

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

2009/9/29 16:30:30

降参 補足に対する回答もありがとうございます!
おっしゃる通り、MyPath = .SelectedItems(1) & "\" としたところ、
エラーも出ずうまく動作させることが出来ました!!!

エラーのくだりが気になるので、もう1つ質問を立てさせて頂きます。
お時間ありましたら、お付き合いくださいm(_ _)m

あわせて知りたい

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

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

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

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

閉じる

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

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

閉じる