实际上我已经基于 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 返回”,或者让我的其余代码免受这些迷你冻结的影响?