1

いくつかの調査と試行錯誤を経て、添付ファイルの大きなリストの名前を変更するのに役立つこの基本的な VBA を見つけることができました。数十個の添付ファイルの名前を変更できましたが、実行時エラー「53: ファイルが見つかりません」が発生しました。見つからないファイル名をスキップするように VBA を変更する方法はありますか?

Sub RenameFiles()
Const strPath = "C:\Documents and Settings\User\My Documents\FolderName\"
Dim r As Long
Dim n As Long
n = Cells(Rows.Count, 1).End(xlUp).Row
For r = 2 To n
Name strPath & Cells(r, 1) As strPath & Cells(r, 2)
Next r
End Sub
4

3 に答える 3

1

On Error Resume Next(私の意見では)特定の/予想されるエラーをチェックし、それらを適切に処理することよりも優れています。この場合、ファイル名が有効かどうかを確認し、有効でNameない場合は割り当てをスキップできます。

Dir()関数を使用して有効なファイル名かどうかを確認します。

Sub RenameFiles()
Const strPath = "C:\Documents and Settings\User\My Documents\FolderName\"
Dim sFile as String
Dim r As Long
Dim n As Long
n = Cells(Rows.Count, 1).End(xlUp).Row
For r = 2 To n
    sFile = strPath & Cells(r,1)
    If Not Dir(sFile) = vbNullString Then 
        Name sFile As strPath & Cells(r, 2)
    End If
Next r
End Sub
于 2013-06-26T15:42:25.963 に答える
1

サブルーチンの先頭に次の行を追加します。

On Error Resume Next

このステートメントは、その内容を正確に実行し、エラーを無視して次のコード行に進みます。

このステートメントを使用してもエラーは修正されないため、注意が必要です。現在の問題については問題ありませんが、他の多くの問題では、エラーを無視するのではなく、エラーを処理する必要があります。

基本を理解するのに適したリソースは、VBA でのエラー処理です。

Excel VBA について詳しく知りたい場合は、brettdj のVBA マクロをマスターするための最良の方法とは何かに対する回答から始めるのが最適です。

On Error Resume Nextまたはによってエラーがどのように影響を受けるかを確認するOn Error GoTo 0には、VBA エディタで次の手順を実行します。

Sub ExcelVBAErrorDemo()

    Dim forceError As Integer

    ' ignore errors
    On Error Resume Next
    ' cause an error
    forceError = 1 / 0

    ' the error was ignored, and the integer variable will
    ' display its default value
    MsgBox "Our forceError variable = " & forceError

    ' turn default error handling behavior back on
    On Error GoTo 0
    ' now we'll get a run-time error
    forceError = 1 / 0

End Sub
于 2013-06-26T15:12:15.113 に答える