質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1192閲覧

VBA FileSystemObject   For文 について

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/10/29 02:45

下記プログラム内容ですが、ウェブサイトから抜粋しています。
指定フォルダの全てのフォルダパスを取得できたため、フォルダ名を回してフォルダの中のフォルダの各ファイルパスを順次取得できないか検討中です。
(多階層ファイルのフォルダを取得したい)
foldername にフォルダ名を格納しているつもりですが、
Set fl = fso.GetFolder("C:\Users\08260\Desktop\試し"foldername)
この行にてパスが見つかりませんとエラーが出ます。

下記内容で、フォルダ名を回して、各フォルダのファイルパスを取得するにはどのように記述したらよろしいでしょうか。

お手数おかけしますがご教授お願いいたします。

VBA

1Sub test2() 2Dim fso As FileSystemObject 3Set fso = New FileSystemObject ' インスタンス化 4 5Dim pfl As Folder 6Set pfl = fso.GetFolder("C:\Users\:::\Desktop\試し\") 7 8Dim foldername As String 9Dim fl1 As Folder 10 11For Each fl1 In pfl.SubFolders 12 foldername = fl1.Name 13 Dim fl As Folder 14 Set fl = fso.GetFolder("C:\Users\:::\Desktop\試し\foldername\") ' フォルダを取得 15 16 Dim f As file 17 For Each f In fl.Files ' フォルダ内のファイルを取得 18   Debug.Print (f.Path) ' ファイルのパス (D:\Tips.txt) など 19 Next 20Next 21 22' 後始末 23Set fso = Nothing 24 25End Sub 26

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

foldernameは変数ですよね。ですので、「""」の中に含めてしまうと変数として認識されません。
また、文字列を接続するには&を使用します。

VBA

1fso.GetFolder("C:\Users\:::\Desktop\試し\foldername\")

以下のようにしてはいかがでしょうか。

VBA

1fso.GetFolder("C:\Users\:::\Desktop\試し\" & foldername & "\")

投稿2021/10/29 02:55

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/29 03:46

hex309様 ご返信ありがとうございます。 おっしゃる通り記述しましたら、無事フォルダ名を回すことが出来ました。 基本的なことを忘れておりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問