Мне кажется, я знаю, что вы имеете в виду, это просто «Но я сталкиваюсь с трудностями при написании кода, который заменяет старый файл, если обнаружит, что имя совпадает». Это немного сбивает с толку.
Проверьте, посмотрите, поможет ли это, во что бы то ни стало, вы можете порезать и изменить его. Это происходит немного иначе, но работает как положено.
Sub CopyFileIfOlder()
'declare your variables
Dim strFilePathOne As String, FileDateOne As Date, FileOneLoc As String
Dim strFilePathTwo As String, FileDateTwo As Date, FileTwoLoc As String
'set your file paths to the two different files
strFilePathOne = "C:\VBNET Test Area\StackOverFlow\File1.txt"
strFilePathTwo = "C:\VBNET Test Area\File1.txt"
'declare and set your objects
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim oFile1 As Object
Set oFile1 = oFSO.GetFile(strFilePathOne)
Dim oFile2 As Object
Set oFile2 = oFSO.GetFile(strFilePathTwo)
'grabs your files modified dates : grabs your files dir location not inc filename
FileDateOne = oFile1.DateLastModified: FileOneLoc = oFile1.Path
FileDateTwo = oFile2.DateLastModified: FileTwoLoc = oFile2.Path
'sets an error handler incase anything goes wrong copying
On Error GoTo FileDeleteAndCopyError
'tests to see if file1 is older
If FileDateOne < FileDateTwo Then
'file one is older
Kill strFilePathOne 'deletes file1
FileCopy strFilePathTwo, FileOneLoc 'copies the newer version into older files place
Else
'file two is newer
Debug.Print "FILE ONE IS NEWER THAN FILE TWO SO I WONT DO ANYTHING" 'PRINTS A MESSAGE SAYING NO COPY HAS BEEN DONE
End If
'RETURNS ERROR HANDLER TO NORMAL
On Error GoTo 0
'EXITS SUB BECAUSE IF NOT THE ERROR HANDLER WILL FIRE
Exit Sub
'ERROR HANDLER INCASE FILE COPY GOES WRONG
FileDeleteAndCopyError:
MsgBox "There has been an error!", vbCritical
End Sub