繁体   English   中英

使用 Excel VBA 将文件从一个文件夹复制到另一个文件夹的更快方法

[英]Faster Way to copy files from one folder to another with Excel VBA

我有一个有效的代码,但想知道是否有一种方法可以更快地复制。 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

我不知道您是否可以在技术上使复制部分更快(正如@BigBen 提到的那样,这已经是一行了),但正如我所提到的,您可以使用Application.PathSeparator跳过检查\\以确保它是“合法”路径样式。

此外,我稍微调整了它 - 怀疑它实际上会影响速度 - 但因为如果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
    If Right(FromPath, 1) <> Application.PathSeparator Then FromPath = FromPath & Application.PathSeparator
    If FSO.FolderExists(FromPath) = True Then

        ToPath = Sheets("status").Range("H2").Value ' DESKTOP
        If Right(ToPath, 1) <> Application.PathSeparator Then ToPath = ToPath & Application.PathSeparator

        Set FSO = CreateObject("scripting.filesystemobject")
        FSO.CopyFolder Source:=FromPath, Destination:=ToPath
    Else
        MsgBox FromPath & " doesn't exist"
    End If
    Application.ScreenUpdating = True
End Sub

当然,这有点微不足道,但我认为值得一提,因为它使用Application.PathSeparator

我创建了一个免费的电子表格程序,可以非常快速地复制文件。 页面参考为: http : //sam308.com/copy-multiple-files

复制多个文件

节目类型:免费节目

系统要求

支持 Visual Basic for Applications (VBA) 的任何版本的 Microsoft Excel。

该程序将允许您将多个文件从任何源目标文件夹复制到任何目标目标文件夹。

复制例程有两个版本,如下图所示:

  • 通过 Excel 复制文件

  • 创建复制批处理文件

在此处输入图片说明

通过 Excel复制文件使用宏例程通过 Excel复制文件。 它对于中小型文件非常有用,并且运行速度很快。

创建复制批处理文件旨在用于大型文件,例如电影媒体和数据库文件。 它创建一个批处理 (.bat) 来复制文件。

原因如下:

如果您将大文件从一个文件夹拖放或复制粘贴到另一个文件夹,则复制过程非常缓慢。 这是因为 Microsoft Windows 将每个文件缓存在内存中,以防再次被删除或粘贴到另一个位置。 发生这种情况时,每次复制新文件时,Microsoft Windows 都必须从内存中转储缓存文件。 一次复制多个大文件时,这会显着减慢复制过程。 因此,我们使用 Microsoft Windows 的 xcopy 命令并创建一个批处理文件 (.bat),绕过内存缓存并使复制过程更快。 创建批处理文件后,您只需双击批处理文件即可执行 xcopy 例程。

以下是示例批处理文件的内容:

Copy_Files.bat

@回声关闭

echo 复制:[1/6] 家庭视频 1.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 1.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

echo 复制:[2/6] 家庭视频 2.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 2.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

echo 复制:[3/6] 家庭视频 3.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 3.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

echo 复制:[4/6] 家庭视频 4.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 4.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

echo 复制:[5/6] 家庭视频 5.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 5.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

echo 复制:[6/6] 家庭视频 6.mp4 & xcopy "D:\\Media\\Home Movies\\Home Video 6.mp4" "E:\\Media\\Home Movies" /Q /J & echo.

下载

您可以在此处下载该程序: Copy_Multiple_Files.xls

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM