VBA FileCopy "зависает" форма - PullRequest
1 голос
/ 20 апреля 2020

На самом деле я кодировал следующий макрос на основе метода FileCopy.

'MyObject copy function:
Public Function OutputFile(ByVal SrcPath As String, ByVal TrgPath As String) As Boolean

    If pDoesFileExist(SrcPath) Then   '<= Internal private function to check if file exists
        FileCopy SrcPath, TrgPath
        OutputFile = True
    Else
        OutputFile = False
    End If

End Function

Вызывается из:

'Called subroutine from main program:
Sub OutputFiles(ByRef MyCollection As Collection, SourcePath As String, TargetPath As String)

    Dim Obj As MyObject

    With MyForm
        .Show "Modeless"
        For Each Obj In MyCollection
            If Obj.OutputFile(SourcePath, TargetPath) Then
                .TextBoxResult.Text = .TextBoxResult.Text & "File copied." & vbNewLine
            Else
                .TextBoxResult.Text = .TextBoxResult.Text & "File not copied!" & vbNewLine
            End if
        Next Obj
    End With

End Sub

Макрос отлично работает, когда я запускаю его из / в мой локальный компьютерные папки, независимо от размера файла (от нескольких КБ до 20 МБ или более).

Но когда я запускаю его, используя исходный путь рабочего домена (который, очевидно, медленнее, чем мой компьютер), строка инструкции FileCopy «зависает» на больших файлах. Программа все еще работает в фоновом режиме, и файлы успешно копируются, однако MyForm будет go зависать [Нет ответа] до конца выполнения.

Пошаговая отладка работает "отлично", Мне просто нужно подождать, пока инструкция FileCopy вернется (примерно 10 секунд), а затем продолжать двигаться вперед.

Я хотел бы знать, есть ли возможный способ заставить это «ждать, пока FileCopy вернется», или предоставить иммунитет к остальной части моего кода против этих мини-зависаний?

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