使用进度条复制文件

use*_*879 1 file-io vba progress-bar

所以我试图在visual basic中做一些我开始学习但仍然不够.大多数情况下,我使用的是互联网代码.现在我想将几个文件从第一个文件夹复制到第二个文件夹并覆盖现有文件,我想在进度条上看到进度(所有文件一起约为2GB)

解决:我找到了一些程序的源代码,并使用了一些部分来完成这项工作

Sid*_*out 8

这是我最喜欢的方式...使用SHFileOperation API

此API将自动显示进度,如下面的屏幕截图所示.

这是一个例子.将此代码粘贴到模块中

Public Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Public Const FO_COPY = &H2
Public Const FOF_SIMPLEPROGRESS = &H100

Public Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
End Type

Public Sub VBCopyFolder(ByRef strSource As String, ByRef strTarget As String)
    Dim op As SHFILEOPSTRUCT

    With op
        .wFunc = FO_COPY
        .pTo = strTarget
        .pFrom = strSource
        .fFlags = FOF_SIMPLEPROGRESS
    End With

    '~~> Perform operation
    SHFileOperation op
End Sub
Run Code Online (Sandbox Code Playgroud)

然后复制这样的文件或文件夹

Private Sub Sample()
    '~~> Copy Files
    Call VBCopyFolder("C:\Sample.Avi", "C:\NewSample.Avi")

    '~~> Copy Folders
    Call VBCopyFolder("C:\Temp1", "C:\Temp2")
End Sub
Run Code Online (Sandbox Code Playgroud)

截图

在此输入图像描述

  • 您需要使用“FOF_NOCONFIRMATION”标志。:) 在顶部声明 `Public Const FOF_NOCONFIRMATION As Long = &H10` 并将 `.fFlags = FOF_SIMPLEPROGRESS` 更改为 `.fFlags = FOF_SIMPLEPROGRESS 或 FOF_NOCONFIRMATION` @ForwardEd (2认同)