下記のようにfso.movefile sFile, dFile 'Here
の通り、fsoオブジェクトを利用してファイルを移動しているのですが、既に同一名称のファイルが存在する場合エラー扱いになります。これを上書きしたいのですが、良い方法はあるでしょうか?
ErrorをスキップするためにOn Error Resume Next
などの方法があることはわかったのですが、同一名称ファイルがあったとしても、元の場所からは少なくとも移動したいため、解決策を模索しております。
ご助言をいただけますと幸いです。
宜しくお願い申し上げます。
vba
1Sub movefile() 2 If Cells(4, 7) = "" Or Cells(4, 17) = "" Then 3 MsgBox "Step3とExtra2が完了しないと実行できないよ!処理を終了します" 4 Exit Sub 5 End If 6 7 Dim startTime As Double 8 Dim endTime As Double 9 Dim processTime As Double 10 11 Dim fso As Object 12 13 Dim sFile As String 14 Dim dFile As String 15 Dim i As Long 16 Dim path As Long 17 18 startTime = Timer 19 20 i = 4 21 dFile = ThisWorkbook.path & "\" & "trush" & "\" & Cells(5, 4) 22 Do While Cells(i, 6) <> "" 23 If Cells(i, 17) = "〇" Then 24 Set fso = CreateObject("Scripting.FileSystemObject") 25 If Cells(i, 7) <> ">" And Not Cells(i, 7) Like "*.pdf*" Then 26 sFile = ThisWorkbook.path & "\" & Cells(5, 4) & "\" & Cells(i, 6) & "\" & Cells(i, 7) & "*報告書*xls*" 27 ElseIf Cells(i, 7) = ">" Then 28 sFile = ThisWorkbook.path & "\" & Cells(5, 4) & "\" & Cells(i, 6) & "\共益" & "\" & Cells(i, 8) & "*報告書*xls*" 29 End If 30 fso.movefile sFile, dFile 'Here 31 Set fso = Nothing 32 i = i + 1 33 Else 34 i = i + 1 35 End If 36 Loop 37 38 endTime = Timer 39 processTime = Round(endTime - startTime, 2) 40 41 MsgBox "今回の処理時間は:" & processTime & "秒でした" & vbCrLf & "お疲れ様でした(・ε・)ノシ" 42End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。