ExcelからExcelへ差し込み印刷　Excelだけで差し込み印刷

# Excelだけで「差し込み印刷」できるマクロを作ります
仕事で、Word+Excelの差し込み印刷を聞かれたのですが、手順が多すぎて、なんとかしたいなと思い、作成した備忘録です。
ついでに、年賀はがきの表書きを作ってみました。

###検索すると色々見つかります
https://engi.cocolog-nifty.com/sirenai/2014/07/vba-f817.html

https://mokomokomomoko.com/excel_macro_print/
様式だけお借りします。

###これが良かった
http://engi-seishi.la.coocan.jp/excel_sample.htm#etc
の　Excel宛名シール印刷（ヨコ3面タテ7面=21面タックシール用のみ）

##これを改造してみます。(作者様、無断でごめんなさい）
印刷　する/しない　列を追加、敬称も追加
<img width=500 alt=宛名2020060100.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/eda8ab91-74b0-e5b2-6c4a-40f76fa2d1ed.png>
printSheetをマクロで直接貼り付けしていたのを、このシートへ貼り付けに変更
このシートのタイトル列と行数分だけコピーして、印刷動作へ、これをdataシートの最後まで繰り返す
例えば、１シート４枚なら、４行にして、printSheetの様式変更に対応
<img width=500 alt=宛名2020060101.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/84a83b9c-267e-cb70-ef8e-aa3171387603.png>
印刷用シート、printDataシートにたいして式　例：=PrintData!E2　でデータを転記 
なので、同じものを４件印刷する場合は、printSheetで対応可能
<img width=500 alt=宛名2020060102.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/520192a9-9867-f7ca-dbc9-6221d9f10af7.png>
マクロの中で使っている名前の定義はこの２件
<img width=400 alt=宛名2020060103.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/3df0ca3a-d869-e98c-68c1-9165da0fe530.png>

#マクロ
備忘録です。これで全部

```vba:Module1
Option Explicit

Sub 宛名シール印刷()
    Dim cHead As Integer    ' printDataテーブルの列数
    Dim cRows As Integer    ' printDataテーブルの行数
    cHead = Worksheets("printData").Range("TBL_printData").ListObject.HeaderRowRange.Count
    cRows = Worksheets("printData").Range("TBL_printData").ListObject.ListRows.Count
    
    Dim iData As Long       ' data処理行
    Dim iPData As Long      ' printData処理行
    Dim jPData As Long      ' printData処理列
    Dim rngData As Range    ' dataのrange
    Dim rngPData As Range   ' printDataのrange
    
    printDataClear          'sheet[printData]の名前[TBL_printData]範囲をクリア
    
    iData = 0
    iPData = 0
    Set rngData = Worksheets("data").Range("A5")       '処理開始位置
    Set rngPData = Worksheets("printData").Range("B1") '処理開始位置
        
    Do Until rngData.Offset(iData, 0).Value = ""
        If rngData.Offset(iData, 0).Value = "する" Then
            iPData = iPData + 1
            For jPData = 1 To cHead
                rngPData.Offset(iPData, jPData - 1) = rngData.Offset(iData, jPData - 1)
            Next
            If iPData > (cRows - 1) Then
                実印刷
                printDataClear   'sheet[printData]の名前[TBL_printData]範囲をクリア
                iPData = 0
                Worksheets("data").Select
            End If
        End If
        iData = iData + 1
    Loop
    If iPData > 0 Then 実印刷
End Sub

' 宛先シール実印刷
Sub 実印刷()
    Sheets("printSheet").Select
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0#)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0)
        .BottomMargin = Application.InchesToPoints(0)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .Orientation = xlPortrait
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Zoom = 98
    End With
    
    Range("Print_Area").Select
    
    Select Case MsgBox(prompt:="印刷を続けますか？" & vbCrLf & "いいえ：プレビュー", Buttons:=vbYesNoCancel)
        Case vbYes
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
        Case vbNo
            ActiveWindow.SelectedSheets.PrintPreview
        Case Else
            Worksheets("data").Select
            End
    End Select
    Worksheets("data").Select
End Sub

'sheet[printData]の名前[printData]範囲をクリア
Sub printDataClear()
    Worksheets("printData").Range("TBL_printData").ClearContents
End Sub
```

#マクロそのままで
１ページ１枚様式もしてみました。
printDataシートとprintSheetシートの変更だけです。
<img width=500 alt=宛名2020060104.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/37673498-f8e6-0434-22ad-2e08710e0d2b.png>
<img width=500 alt=宛名2020060105.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/21211021-1bcd-72d9-60da-02ad59dbcc6d.png>

[物忘れ防止 宛名シールの印刷_２１面シール改.xlsm　差し込み印刷.xlsm ](https://github.com/sugita0301/douzo/blob/master/%E5%B7%AE%E3%81%97%E8%BE%BC%E3%81%BF%E5%8D%B0%E5%88%B7.zip)
https://github.com/sugita0301/douzo

#年賀状印刷

住所録のテンプレートはここからいただきました。
https://www.microsoft.com/ja-jp/office/pipc/nengajo/05.aspx
年賀はがきのイメージは、スキャナで取り込むまたは、Wrodのウイザードでも入手できます。

こんな感じになります。
<img width=500 alt=年賀2020060701.png src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646883/9b447f88-641a-d74d-55b1-a6e11eabdcc5.png>