こじんてきメモ

趣味とか...(╹◡╹)

【VBA】すべてのシートを印刷するマクロ

毎日毎日ある一定タイミングで台帳印刷を行う必要があったので作った。

タスクスケジューラに登録して使う。

今まで5~10分位かかってたけど、導入してからは10秒位で終わるようになった。

このまま全部コピペして、workbook_Openイベントに書けば動く。

Option Explicit
'**************************************************************************************************************************
'★タイトル:「全てのシートを印刷するマクロ」
' 作成者:hamada
Private Sub Workbook_Open()
'0.定義&初期化
    Dim a As String
    Dim b As String
    Dim c As Integer
    Dim msg As Long
    Dim msg1 As Long
    Dim shName() As String
    Dim shName1 As String
    
    b = ThisWorkbook.Name
    c = Worksheets.Count
    shName1 = ""
    ReDim shName(c) As String
    
    For c = 1 To c
        shName(c) = Worksheets(c).Name
        shName1 = shName1 & "「" & shName(c) & "」"
    Next
'1.ダイアログを出して印刷させる処理
    msg = MsgBox("ファイル名:" & b & vbCrLf & "シート:" & shName1 & vbCrLf & vbCrLf & "を印刷します。よろしいですか?", vbYesNo + vbDefaultButton2 + vbQuestion)

    If msg = vbYes Then
        Worksheets.Select
        Application.Dialogs(xlDialogPrint).Show
        msg1 = MsgBox("印刷が終了しました。このまま保存せずに閉じますか?", vbYesNo + vbDefaultButton2 + vbQuestion)
        If msg1 = vbYes Then
            If Workbooks.Count = 1 Then
                Application.Quit
                ThisWorkbook.Close savechanges:=False
            Else
                Application.DisplayAlerts = False
                ThisWorkbook.Close
                Application.DisplayAlerts = True
            End If
            
        Else
            Worksheets(1).Select
        End If
    Else
    End If
    
End Sub