Excel에서 Excel로 편지 병합 Excel만으로 편지 병합

5793 단어 VBAExcel

Excel만으로 "편지 병합"할 수있는 매크로를 만듭니다.



일로, Word+Excel의 편지 병합을 들었습니다만, 순서가 너무 많아, 어떻게든 하고 싶다고 생각해, 작성한 비망록입니다.
그 다음에, 연하 엽서의 표서를 만들어 보았습니다.

검색하면 여러 가지를 찾을 수 있습니다.



h tps // 모코모코모모코. 이 m/에 x세 l_마c로_p 인 t/
양식만 빌립니다.

이것이 좋았다.



h tp // 엔기세이시. 아. 코오칸. jp / 에 x 세 l_ mp ぇ. htm#에tc
의 Excel 주소 씰 인쇄 (가로 3면 세로 7면 = 21면 탁 씰용 전용)

이것을 개조해 보겠습니다. (작가님, 무단으로 미안해)



인쇄 한다/하지 않는다 열을 추가, 경칭도 추가

printSheet를 매크로로 직접 붙여넣은 것을 이 시트에 붙여넣기로 변경
이 시트의 타이틀 열과 행수분만큼 복사해, 인쇄 동작에, 이것을 data 시트의 끝까지 반복한다
예를 들면, 1 시트 4장이라면, 4행으로 해, printSheet의 양식 변경에 대응

인쇄용 시트, printData 시트에 대해 식 예:=PrintData!E2로 데이터를 전기
그래서 같은 것을 4건 인쇄하는 경우는 printSheet로 대응 가능

매크로에서 사용하는 이름의 정의는이 두 가지입니다.


매크로



비망록입니다. 이제 모두

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

매크로 그대로



1 페이지 1 장 양식도 해 보았습니다.
printData 시트와 printSheet 시트만 변경하면 됩니다.



잊어 버리기 방지 목적지 씰 인쇄 _21면 씰 개.xlsm 편지 병합 인쇄.xlsm
htps : // 기주 b. 이 m / 너무 0301 / 제발

연하장 인쇄



주소록 템플릿은 여기에서 받았습니다.
htps //w w. 미 c 로소 ft. 코 m/쟈-jp/오후우세/피 pc/넨가죠/05. 아 spx
연하 엽서의 이미지는 스캐너로 캡처하거나 Wrod의 마법사에서도 사용할 수 있습니다.

이런 느낌이 듭니다.

좋은 웹페이지 즐겨찾기