[[20200421182145]] 『(Dir関数)ループ処理での存在しないファイルのスメx(あべ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『(Dir関数)ループ処理での存在しないファイルのスキップについて』(あべ)

ループ処理中に存在しないファイルをスキップしたいです。
(Dir関数を用いるべきか悩んでおり、初心者ゆえ使い方が分からずつまずいております)

開いているブックから
指定した値の名前のブックを開いて転記して保存して閉じる
という作業をループしております。

 「For i = 2 To Sheets("一覧").Range("A100000").End(xlUp).Row」

ただ、指定した値の中には、存在しないブックもあります。
ブックが存在しない場合は、何も処理をせず、次の「i」に進みたいです。

エラーをスキップするなどの
「on error go to」では1回しか処理されず、
「On Error Resume Next」では、恐らく最後の処理の「保存して閉じる」のところでおかしなことになります。

そこで、エラーが出ないようにDir関数を使い、
存在しないファイルの場合、次の「i」に処理を進むようにしたいのですが、
うまくいかずつまずいてる次第です。
ご教授いただますと幸いです。

Sub 転記

For i = 2 To Sheets("対象者").Range("A100000").End(xlUp).Row

'条件_G行目がaのみ転記する
If Not (Range("G" & i)) = "a" Then

 【ここにファイルが存在しないものも、Go To Contineに進む指示をしたいです】

GoTo Continue

   End If

 '処理1
 '処理2
 '処理3

Continue:

    Next i

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 参考HPです。

http://officetanaka.net/excel/vba/function/Dir.htm
(OK) 2020/04/21(火) 19:42


 ↑質問の意図を取り違えてました。
(OK) 2020/04/21(火) 19:50

 横から失礼。
 条件を満たすときだけ実行するように考え方を変えたらどうでしょう。

 Sub 転記2()
     For i = 2 To Sheets("対象者").Range("A100000").End(xlUp).Row
         '条件_G行目がaのみ転記する
         If Range("G" & i).Value = "a" Then
             If dir処理 <> "" Then
                 '処理1
                 '処理2
                 '処理3
             End If
         End If
     Next i
 End Sub

(γ) 2020/04/21(火) 20:05


 >ブックが存在しない場合は、何も処理をせず、次の「i」に進みたいです。

 Sub 転記3()
    Dim fileName As String

    With Sheets("対象者")
        For i = 2 To .Range("A100000").End(xlUp).Row
            fileName = .Range("G" & i).Value
            'ファイルが有れば
            If Dir(パス & "\" & fileName) <> "" Then
                 '処理1
                 '処理2
                 '処理3
            End If
        End If
    Next i
 End Sub

(ピンク) 2020/04/21(火) 21:10


コメントありがとうございます。
条件を満たすときだけ実行する、その通りですね
組み合わせてうまく実行できました!
ありがとうございます。
(あべ) 2020/04/22(水) 08:44

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.