首页 > 解决方案 > VBA FileCopy“冻结”表单

问题描述

实际上我已经基于 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

无论文件大小如何(从几 KB 到 20MB 或多或少),当我让它从/向我的本地计算机文件夹运行时,该宏都能完美运行。

但是当我使用工作域源路径(这显然比我的计算机慢)运行它时,指令行 FileCopy 会“冻结”大文件。程序仍在后台运行,文件已成功复制,但 MyForm 将卡住 [No Response] 直到执行结束。

逐步调试“很好”,我只需要等待 FileCopy 指令返回(大约 10 秒),然后继续前进。

我想知道是否有可能的方法来强制这种“等到 FileCopy 返回”,或者让我的其余代码免受这些迷你冻结的影响?

标签: excelvbaformsfreezefilecopy

解决方案


推荐阅读