Как избежать перезаписи и сохранить оба файла в папке с помощью макроса Excel - PullRequest
0 голосов
/ 19 декабря 2018

Я создал код для копирования файла по частичным именам, которые включены в активную рабочую книгу, и когда это будет сделано, ячейка будет окрашена.

Я использовал опцию «Boolean», чтобы перезаписать файлы раньше, но Теперь мне нужно сохранить оба файла в целевой папке, если в целевой папке существует один и тот же файл с тем же именем. Как мне решить эту проблему?

Sub Copy_by_keyword()
    Dim sSrcFolder As String
    Dim sTgtFolder As String
    Dim sFilename As String
    Dim c As Range
    Dim rPatterns As Range
    Dim bBad As Boolean

    sSrcFolder = ("C:\Personal\Reports")
    sTgtFolder = ("D:\VBA\Trade\")

    Set rPatterns = ActiveSheet.Range("M10:M100").SpecialCells(xlConstants)
    For Each c In rPatterns
        sFilename = Dir(sSrcFolder & "*" & c.Text & "*")
        If sFilename = "" Then
            c.Interior.ColorIndex = 4
            bBad = False  'I tried to use this as False but nothing happens'
        Else
            While sFilename <> ""
                FileCopy sSrcFolder & sFilename, sTgtFolder & sFilename
                sFilename = Dir()
                c.Interior.ColorIndex = 6
            Wend
        End If
    Next c
    If bBad Then MsgBox "Files not found"

End Sub

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы хотите сохранить оба файла, проверьте, существует ли он, и переименуйте его перед копированием.Для проверки, если он существует, вы можете использовать следующий фрагмент.

Dim fso As New FileSystemObject
Dim filepath As String
filepath = "yourfilepath"

While fso.FileExists(filepath)
'rename it
Wend

Для использования FileSystemObject необходимо установить ссылку на Windwos Script Host Object Model

EDIT : чтобы ответить на ваш комментарий: Вы можете проверить, существует ли изатем откройте окно сообщения:

If MsgBox("Override", vbYesNo) = vbYes Then
End If
...