excel - 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 返回”,或者让我的其余代码免受这些迷你冻结的影响?
解决方案
推荐阅读
- c - 作为 WSARecvFrom 调用的一部分,如何将缓冲区放入 CompletionROUTINE?
- php - 如何在 Fancybox 上添加下载按钮?
- docker - 托管 Linux 预览代理上的缓存 Docker 映像
- sql - How to easily see if many tables are mutually exclusive in SQL?
- c# - 如何防止 C# WPF 中的 UI 挂起?
- sql - 在 select join 语句上添加自动递增列
- c# - 您可以直接使用“CALL Proc_name()”作为字符串,或者在 C# 中使用 CommandType.StoredProcedure
- c# - 为什么 SetSystemTime() 在下午的行为不同?
- jhipster - Using multiple field for combo & list
- node.js - 如何在 Node js Swagger.json 中传递查询参数?