ユーザーフォームを使用して、フォルダを別の場所にコピーするマクロコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひ、お試しください。
概要
ユーザーフォームでフォルダのコピーを作成します。
「コピー元のフォルダ」で指定したフォルダを
「コピー先のフォルダ」へフォルダごとコピーします。
ユーザーフォームを作成して開く
エクセルにコマンドボタンを作成し、ユーザーフォームを開きます。
マクロコードを標準モジュール「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」をクリックします。
続いて、「コピー先のフォルダ」ボタンをクリックし、ダイヤログ画面を表示します。
複製先のフォルダを選択して、「OK」をクリックします
「コピー元のフォルダ」と「コピー先のフォルダ」の両方にフォルダパスが入ります。
「実行」をクリックします。
処理完了後、メッセージボックスが表示されます。
実行結果
「コピー元のフォルダ」で指定したフォルダを
「コピー先のフォルダ」へフォルダごとコピーできました。
「コピー元のフォルダ」の容量が大きいと、VBAの処理時間は長くなります。
この記事がお役に立ちますと幸いです。
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説