【发布时间】:2026-02-06 20:20:06
【问题描述】:
我有一个可以工作的代码,但想知道是否有一种方法可以更快地复制。
FromPath 在共享文件夹中,ToPath 在我的桌面上。
Sub Update_Circulation_folder1()
Dim FSO As Object
Dim FromPath As String
Dim ToPath As String
Application.ScreenUpdating = False
FromPath = Sheets("status").Range("H1").Value & "\" ' DESKTOP
ToPath = Sheets("status").Range("H2").Value & "\" ' DESKTOP
If Right(FromPath, 1) = "\" Then
FromPath = Left(FromPath, Len(FromPath) - 1)
End If
If Right(ToPath, 1) = "\" Then
ToPath = Left(ToPath, Len(ToPath) - 1)
End If
Set FSO = CreateObject("scripting.filesystemobject")
If FSO.FolderExists(FromPath) = False Then
MsgBox FromPath & " doesn't exist"
Exit Sub
End If
FSO.CopyFolder source:=FromPath, Destination:=ToPath
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
复制一行:
FSO.CopyFolder source:=FromPath, Destination:=ToPath。您是在问如何加快速度? -
你总是在
FromPath和ToPath的末尾添加一个反斜杠,然后检查是不是这样,如果是这样, 删除它。 ...... -
要使 I/O 工作得更快,您需要更快的 I/O 设备。从/到本地硬盘驱动器复制(不涉及网络),具有高速 SSD。没有任何代码可以使您的硬盘驱动器的读写器磁头工作得更快。
-
如果您对工作代码的任何/所有方面的反馈感兴趣,我建议您将您的代码提交到 Code Review 以供同行评审 - 请注意,Rubberduck 检查会获得您在此处获得的潜在问题的数量,包括implicit ActiveWorkbook references、untyped function usages 等。
-
你可以提前绑定它——什么会将 FSO 成员调用的绑定从运行时移动到编译时(这有其非常真实的优势,但这将是几毫秒, 不明显),但成员调用本身是 I/O 绑定的……如果您需要它运行得更快,请在更快的网络上运行它。
标签: excel vba directory path copy