ファイル一括コピー
目次
メインモジュール・コード
Option Explicit
Sub ファイル参照()
If MsgBox(ActiveCell.Address & "に設定しますか?", vbYesNo, "ファイルパス設定") = vbYes Then
ActiveCell.Value = ファイル選択()
End If
End Sub
Sub フォルダ参照()
Range("F2").Value = フォルダ選択() & "\"
'ハイパーリンク設定
ActiveSheet.Hyperlinks _
.Add Anchor:=Range("F2"), Address:=Range("F2").Value
End Sub
Function ファイル選択()
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = False
.Title = "ファイルの選択"
If .Show = True Then
ファイル選択 = .SelectedItems(1)
Else
MsgBox "選択されていません"
End If
End With
End Function
Sub ファイルコピー()
Dim tgtFolder As String
tgtFolder = Range("F2").Value
Dim rngList As Range
If Range("F5").Value <> "" Then
Set rngList = Range(Range("F5"), Range("F5").End(xlDown))
Else
MsgBox "コピーファイルが1つも設定されていません", vbCritical
Exit Sub
End If
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim myRng As Variant
On Error Resume Next
For Each myRng In rngList
If myRng.Value <> "" Then
FSO.CopyFile myRng, tgtFolder
End If
Next myRng
Set FSO = Nothing
'エラー表示
Call エラー表示("コピー作成完了")
End Sub
Function フォルダ選択()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path & "\"
.AllowMultiSelect = False
.Title = "フォルダの選択"
If .Show = True Then
フォルダ選択 = .SelectedItems(1)
Else
MsgBox "選択されていません"
フォルダ選択 = ""
End If
End With
End Function
Sub エラー表示(Optional ByVal myMsg As String)
If Err.Number <> 0 Then
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラーの種類:" & Err.Description, vbExclamation
Else
MsgBox myMsg
End If
End Sub
解説
【説明】
F2セルで指定したフォルダに、F5以降のセル(※)で設定したファイルをコピーする。
同名のファイルがある場合は上書きする。
※ただし、空白を含めない。また、F5セルが空白の場合は処理を中断する。
ツールダウンロード