コピー元ファイルのどちらかが存在するかをまず確認するコードを作成して、全てのコピー元ファイルが存在する事を確認後、ファイルコピールーチンに移行した方が良いように思います。
理由は500もあるのに、コピー元ファイルが2つとも存在しない場合は毎回コードを中断し、ファイルをダウンロード、再度最初からコピーを開始では効率が悪いと思います。
存在しないファイル数が多数にのぼるとメッセージでは処理しきれませんので、シートの一覧表に存在しないファイル名と指定フォルダ名を記入すると良いかと思います。その場合、2つのファイルは不要なのでしょうからA列のファイルを指定するというルーツを決めておく。
下記はファイルが存在するか確認するコードです。
確認はdir関数で行っています。
2回目のループ処理でコピーもとファイルを指定してコピーすれば良いでしょう。そのコードは簡単なので記載しません。
添付画像は存在しないファイルの表示の一例です。
Sub test()
Dim i, j, k As Integer
Dim MaxR, cnt, PLen As Integer
Dim flag As Boolean
Dim Pname, Fname As String
'コピー元ファイルが存在するか確認
With Worksheets("sheet1")
MaxR = Cells(Rows.Count, 1).End(xlUp).Row
i = 2
flag = True
Do While i < MaxR + 1
'コピー元ファイルが両方存在しない場合はA列のファイルをD列に、フォルダ名をE列に記入
If Dir(.Cells(i, 1).Value) = "" And Dir(.Cells(i, 2).Value) = "" Then
PLen = InStrRev(.Cells(i, 1).Value, "\")
Pname = Left(.Cells(i, 1).Value, PLen)
Fname = Mid(.Cells(i, 1).Value, PLen + 1)
.Cells(i, 4).Value = Fname
.Cells(i, 5).Value = Pname
cnt = cnt + 1
flag = False
Else
.Cells(i, 4).Value = ""
.Cells(i, 5).Value = ""
End If
i = i + 1
Loop
If flag = False Then
MsgBox "存在しないファイルが" & cnt & "個あります、sheet1のD列のファイルをダウンロードして下さい"
Exit Sub
End If
'これ以降はご自身で解決下さい。
i = 2
Do While i < MaxR + 1
i = i + 1
Loop
End With
End Sub
お礼
例外エラーを使った方法…いいですね! MSDNは割と綺麗なんですが、分かりづらくないですか? うーん…回答ありがとです
補足
配列ループですか…?何か参考になるコードなどありますでしょうか? 配列に関して勉強不足でして…