|
▼jam さん:
ポンタ さん、こうさん
こんにちは。
'====================================================
Sub test()
Dim あるフォルダ As String
Dim 別のフォルダ As String
Dim コピー条件 As String
あるフォルダ = "D:\My Documents\TESTエリア"
別のフォルダ = "D:\My Documents\copytest"
コピー条件 = "*.xls"
MsgBox "フォルダ「" & _
別のフォルダ & "」に " & sp_copy(あるフォルダ, 別のフォルダ, コピー条件) & "個のファイルをコピーしました"
End Sub
'===================================================================
Function sp_copy(あるフォルダ As String, 別のフォルダ As String, コピー条件 As String) As Long
On Error GoTo err_sp_copy
Dim flnm As String
flnm = Dir(あるフォルダ & "\" & コピー条件)
sp_copy = 0
Do While flnm <> ""
FileCopy あるフォルダ & "\" & flnm, 別のフォルダ & "\" & flnm
sp_copy = sp_copy + 1
flnm = Dir()
Loop
ret_sp_copy:
On Error GoTo 0
Exit Function
err_sp_copy:
MsgBox Error(Err.Number)
Resume ret_sp_copy
End Function
でどうでしょう?
ちなみにDosコマンドだと、
'=============================================================
Sub test()
Dim あるフォルダ As String
Dim 別のフォルダ As String
Dim コピー条件 As String
あるフォルダ = "D:\My Documents\TESTエリア"
別のフォルダ = "D:\My Documents\copytest"
コピー条件 = "*.xls"
Call copy_dos(あるフォルダ, 別のフォルダ, コピー条件)
End Sub
'======================================================================
Sub copy_dos(あるフォルダ As String, 別のフォルダ As String, コピー条件 As String)
Shell Environ$("COMSPEC") & " /C copy """ & あるフォルダ & "\" & コピー条件 & """, """ & 別のフォルダ & "\*.*""", vbHide
End Sub
Dosコマンドって、VBAで初めて使いましたので、ちょっと心配ですが・・。
Shellだから、同期を取らなければならないときは、面倒かも・・・。
でも、処理は、最初のコードより、速かったですよ。
|
|