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

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

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

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

Q&A

解決済

1回答

449閲覧

for文で取得したパスがどこにあるのかわからない件について

s.s.s.s.

総合スコア3

VBA

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

0グッド

0クリップ

投稿2022/05/23 15:43

編集2022/05/23 15:46

初めまして。プログラミング初心者です。
現在VBAを使ってあるプログラムを作成しています。

【実行したい処理】
以下のfor文で、ファイルのパスを取得したい。

【現状】
if文内にMsgBoxを入力し、FilePath(i)と入力すればパスがきちんと表示される。
しかし、For文を抜けた(Nextの後ろ)にMsgBoxを記述すると中身が表示されない。
(メッセージボックスが1度表示され、ブランクの状態)

このコードの後ろに、ここで取得したパスのファイルを開くというプログラムを
追加したいのですが、パスが取得できていない(正しく表示されない)ため
次に進めません。どうしたらいいのか教えてください。よろしくお願いします。

Dim FilePath As Variant ReDim FilePath(1 To 200) '指定フォルダ内の.txtファイルを探索します i = 0 For Each File In FSO.GetFolder(Fname).Files If InStr(File.Name, "sh") > 0 Then i = i + 1 Else If InStr(File.Name, ".log") > 0 Then i = i + 1 FilePath(i) = File.path 'ファイルのフルパスを取得 'MsgBox FilePath(i) 4件のパスが正常に表示されることを確認 End If End If Next

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

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

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

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

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

y_waiwai

2022/05/23 22:11

その、表示されないというコードも含めて、提示しましょう
退会済みユーザー

退会済みユーザー

2022/05/24 00:31 編集

iをカウントアップ(+1する)ことの意味って、なんなんでしょうね? +1することと、FilePath(i) = File.path が直接連動していない場面があるのが、どうしても気になってしまう。そもそも、このコードは何を目的にして書いていて、FilePathなる配列にどういうふうにデータを詰めることを期待しているのでしょうか? そこがわかっていないから、曖昧なコードになっているのではないでしょうか? 仕様を正しく解釈してコードを書かないと。
s.s.s.s.

2022/05/24 00:46

すみません。初めて書いたコードなので無駄が多くあいまいなコードになってしまっていますよね。 何をしたいのかを明確にしたうえでどのような結果を期待するのかをしっかり考えて プログラムを作成できるよう今後はより一層頑張ってまいります。 コメントいただきありがとうございました。
guest

回答1

0

ベストアンサー

下記でどうですか。

vba

1 Dim FilePath As Variant 2 ReDim FilePath(1 To 200) 3 4 '指定フォルダ内の.txtファイルを探索します 5 i = 0 6 For Each File In FSO.GetFolder(Fname).Files 7 If InStr(File.Name, "sh") > 0 Then 8' i = i + 1 削除 9 Else 10 If InStr(File.Name, ".log") > 0 Then 11 i = i + 1 12 FilePath(i) = File.Path 'ファイルのフルパスを取得 13 14 'MsgBox FilePath(i) 4件のパスが正常に表示されることを確認 15 End If 16 End If 17 Next 18 19 '取得したパスの確認 20 i=1 21 Do until FilePath(i) <> "" 22 MsgBox FilePath(i) 23 i = i + 1 24 Loop

投稿2022/05/24 00:09

hatena19

総合スコア33715

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

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

s.s.s.s.

2022/05/24 00:24

無事に表示されました。 本当に助かりました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問