だから私はビジュアルベーシックで何かをしようとしていますが、それでもそれだけでは十分ではありません。主にインターネットのコードを使用しています。ここで、最初のフォルダーから2番目のフォルダーにいくつかのファイルをコピーして既存のファイルを上書きし、進行状況バーで進行状況を確認したい(すべてのファイルを合わせて約2GB)
解決済み:いくつかのプログラムのソースコードを見つけ、これを機能させるためにいくつかの部分を使用しました
だから私はビジュアルベーシックで何かをしようとしていますが、それでもそれだけでは十分ではありません。主にインターネットのコードを使用しています。ここで、最初のフォルダーから2番目のフォルダーにいくつかのファイルをコピーして既存のファイルを上書きし、進行状況バーで進行状況を確認したい(すべてのファイルを合わせて約2GB)
解決済み:いくつかのプログラムのソースコードを見つけ、これを機能させるためにいくつかの部分を使用しました
これが私のお気に入りの方法です... 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
次に、このようなファイルまたはフォルダをコピーします
Private Sub Sample()
'~~> Copy Files
Call VBCopyFolder("C:\Sample.Avi", "C:\NewSample.Avi")
'~~> Copy Folders
Call VBCopyFolder("C:\Temp1", "C:\Temp2")
End Sub
スクリーンショット