Macro Excel - Как отметить ошибки? - PullRequest
0 голосов
/ 30 апреля 2018

с этим кодом

Public Sub CopiaFile()

Dim Origine  As String
Dim Destinazione As String


Last_Row = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, 
SearchDirection:=xlPrevious).Row

For i = 4 To Last_Row

    Origine = Cells(i, 6)
    Destinazione = Cells(i, 7)

    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CopyFile Origine, Destinazione
    Set fs = Nothing

Next i


End Sub

(как вы понимаете лучше меня) Я хочу скопировать какой-нибудь файл из пути (указанного в строке G), в путь (указанного в строке H). В определенный момент он начал давать мне ошибку 76 путь не найден. Но существуют и исходный путь, и папка назначения.

Я хотел бы добавить несколько строк, которые могут позволить мне:

  • пропустить строку с ошибкой
  • обратите внимание в соответствии со строкой (в строке I), что этот файл не был скопирован

Не могли бы вы мне помочь?

Большое спасибо

1 Ответ

0 голосов
/ 30 апреля 2018

Отредактировано и проверка измененных путей к файлам

из вашего повествования у вас неправильные индексы столбцов

кроме того, вы можете создать один объект FSO для всех CopyFile методов

Вы также можете использовать Value2 свойство объекта Range, чтобы получить его фактическое текстовое содержимое

наконец, вы можете проверить наличие файла Origine, а не наличие файла Destinazione, чтобы фактически вызвать CopyFile для них:

Public Sub CopiaFile()

    Dim Origine  As String
    Dim Destinazione As String
    Dim Last_Row As Long, i As Long

    Last_Row = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

    With CreateObject("Scripting.FileSystemObject") ' instantiate and reference a FSO object
        For i = 4 To Last_Row
            Origine = Cells(i, 7).Value2 ' column index 7-> column G
            Destinazione = Cells(i, 8).Value2 ' column index 8-> column H
            If .FileExists(Origine) And (.folderexists(Destinazione) Or .FileExists(Destinazione)) Then
                .CopyFile Origine, Destinazione
            Else
                Cells(i, 9).Value = "file not copied"
            End If
        Next
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...