【ユーザーフォーム】シートを別ファイル保存:2クリックで完了

エクセルマクロ_ユーザーフォームでシートを別ファイル保存_アイキャッチ エクセルマクロで効率化する

ユーザーフォームで、特定シートを別のファイルで保存するマクロコードをご紹介します。

ユーザーフォームで選択したシートを簡単に別ブックで保存することができます。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

ユーザーフォームを作成して開く

エクセルにコマンドボタンを作成し、ユーザーフォームを開きます。


 

マクロコードを標準モジュール「Module1」に入力します。


Sub ボタン1_Click()
    UserForm1.Show vbModeless
End Sub

 

マクロコードを「Module1」に入力した画面の様子


 

ユーザーフォーム内部にマクロコードを入力する

マクロコードを「UserForm1」に入力します。


Private Sub CommandButton1_Click()

Dim MyPath As String
Dim ShtName As String

    MyPath = ThisWorkbook.Path
    ShtName = UserForm1.ListBox1.Value
    
    'シートを別ファイルについて保存
    Sheets(ShtName).Copy

    '名前をつけて保存
    Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs FileName:=MyPath & "\" & ShtName, _
         FileFormat:=xlOpenXMLWorkbook, Local:=True
         ActiveWorkbook.Close True
    Application.DisplayAlerts = True
    
    MsgBox "完了"
    
End Sub

Private Sub UserForm_Initialize()

Dim MyList() As Variant
Dim i As Integer

    With UserForm1.ListBox1

        '1つだけ選択
        .MultiSelect = fmMultiSelectSingle

        'チェックボックス表示
        .ListStyle = fmListStyleOption
        
        ReDim Preserve MyList(Sheets.Count)

        'シート名を取得
        For i = 2 To Sheets.Count
            MyList(i) = Sheets(i).Name
        Next i

        'リストボックスに追加
        For i = 2 To UBound(MyList)
            .AddItem MyList(i)
        Next i

    End With

End Sub

 

マクロコードを入力する場所「UserForm1」


 

動作

「ユーザーフォームを開く」ボタンをクリックして、ユーザーフォームを起動します。

[ListBox1] にシート名の一覧が表示されます。


 
 

別ファイル保存したいシートを選択して、「別ファイル作成」ボタンをクリックします。

別ファイルの作成が完了すると、メッセージボックスに「完了」と表示されます。


 
 

マクロファイルを保存しているフォルダと同じ場所に「5月.xlsx」を作成しました。

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

【ユーザーフォーム】シートをCSVファイルで保存する:VBA
...

 

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