ファイルのコピーを作成する
FileSystemObjectオブジェクトを用いる。
ファイルのコピーを作成するFunction
FileSysetmObjectオブジェクトのCopyFileメソッドをラップする。
参照設定でMicrosoft Scripting Runtimeにチェックを入れておく。
リスト1 標準モジュール
Public Function createCopyFile(ByVal oldFullName As String, _
ByVal newFullName As String) As Boolean
createCopyFile = False
If Dir(oldFullName, vbNormal) = "" Then Exit Function
On Error Resume Next
Err.Clear
Dim fileSystemObject_ As New FileSystemObject
Call fileSystemObject_.CopyFile(Source:=oldFullName, _
Destination:=newFullName)
If Err.Number > 0 Then Exit Function
On Error GoTo 0
createCopyFile = True
End Function
元ファイルのフルパスと新ファイルのフルパスを引数として処理をする。ファイルコピーに成功したらTrue、失敗したらFalseを返すようにした。
使ってみる

F:\お持ち帰り\ち~んwフォルダ内に、このようにたくさんのファイルが入っている。

シートのD1セルに、コピーを作成したいファイルがあるフォルダのパスが入力されている。

で、シートのA列にこんなふうにファイル名が列挙されている。
この状態で、シートA列のファイル名が入っているセルを全て選択し、次のコードで実験。
リスト2 標準モジュール
Public Sub testCreateCopyFile()
Dim targetFolderPath As String
targetFolderPath = Sheet1.Range("D1").Value
Dim targetCell As Range
For Each targetCell In Selection
With targetCell
If Not createCopyFile( _
targetFolderPath & .Value, _
targetFolderPath & "backup\" & .Value) Then Exit Sub
End With
Next
End Sub
元のファイルがあるF:\お持ち帰り\ち~んwフォルダ内のbackupフォルダ内に、全てのファイルのコピーを作成するコード。
実行結果
F:\お持ち帰り\ち~んw\backupフォルダを開けてみると、

この通り、全てのファイルがコピーされている。
おわりに
Webページにupするために、大量のファイル名を1バイト文字のみのファイル名に変換する必要があって、簡単なファイル名変換ツールを作った。そのとき、バックアップを取る機能を付けるために、久しぶりにFileSystemObjectオブジェクトを使ったので、覚書的に書き残すことにした。