【ユーザーフォーム】フォルダごと別の場所にコピーする:VBA

ユーザーフォームvba_フォルダを別の場所にコピー_アイキャッチ エクセルマクロで効率化する

ユーザーフォームを使用して、フォルダを別の場所にコピーするマクロコードをご紹介します。

[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の処理時間は長くなります。

この記事がお役に立ちますと幸いです。
 

【VBAユーザーフォーム】何ができるの?:具体的な使用例11選
...