ユーザーフォームを使用して、フォルダを別の場所にコピーするマクロコードをご紹介します。
[CopyFolder] を使用して、フォルダごと指定パスにコピーします。
フォルダのバックアップを作成したいときにも便利だと思います。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
ユーザーフォームを作成して開く
エクセルにコマンドボタンを作成し、ユーザーフォームを開きます。
マクロコードを標準モジュール「Module1」に入力します。
Sub ボタン1_Click()
UserForm1.Show vbModeless
End Sub
マクロコードを「Module1」に入力した画面の様子
ユーザーフォーム内部にマクロコードを入力する
マクロコードを「UserForm1」に入力します。
Option Explicit
Dim dlg As FileDialog
Dim Fso As Object
Dim fold_path As String
Dim Buf As String
Dim FileName As Variant
Dim FileSp As Variant
Sub folderpass_input()
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
'キャンセルボタンクリック時にマクロを終了
If dlg.Show = False Then Exit Sub
'フォルダーのフルパスを変数に格納
fold_path = dlg.SelectedItems(1)
'フォルダ名を取得
If Buf = 1 Then
FileSp = Split(fold_path, "\")
FileName = FileSp(UBound(FileSp))
End If
End Sub
Private Sub CommandButton1_Click()
'フォルダを選択し、テキストボックスへパスを転記
Buf = 1
Call folderpass_input
TextBox1.Text = fold_path
End Sub
Private Sub CommandButton2_Click()
'フォルダを選択し、テキストボックスへパスを転記
Buf = 2
Call folderpass_input
TextBox2.Text = fold_path
End Sub
Private Sub CommandButton3_Click()
Set Fso = CreateObject("Scripting.FileSystemObject")
'フォルダにコピー
Fso.CopyFolder TextBox1.Text, TextBox2.Text & "\" & FileName
Set Fso = Nothing
MsgBox "完了"
End Sub
マクロコードを入力する場所「UserForm1」
動作
「テスト」フォルダを、フォルダごと指定の場所へ複製したいと思います。
ユーザーフォームを起動します。
「コピー元のフォルダ」ボタンをクリックすると、フォルダを選択するダイヤログ画面が表示されます。
コピーしたいフォルダを選択して、「OK」をクリックします。
「コピー先のフォルダ」ボタンをクリックすると、フォルダを選択するダイヤログ画面が表示されます。
ここでは、「コピー元のフォルダ」の複製先を選択します。
「コピー元のフォルダ」と「コピー先のフォルダ」の両方にフォルダパスを入力したら、
「実行」をクリックします。
処理が完了したら「完了」というメッセージボックスが表示されます。
「テスト」フォルダを、「バックアップ」フォルダ内にコピーしました。
「コピー元のフォルダ」の容量が大きい分、VBAの処理時間は長くなります。
この記事がお役に立ちますと幸いです。

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説