Excelで表を使った顧客管理ソフトを作ってみよう

Step 18 はがき連続印刷の実行

実行は下記の流れになります。
1)郵便番号・住所のシェイプ枠を消す
2)「はがき連続印刷」列のマークの最後尾行をさがします。
3)上から順にデータをセットしていきます。
  ・郵便番号は1文字づつ分解し、シェイプ枠にセットします。
  ・住所は縦書きになるよう、"-"を"│"に変換しセットします。
4)印刷プレビューを実行します。
  印刷するか閉じるとプレビューは終了します。
5)最後の行までこれを繰り返します。

印刷プレビューの実行部分
Sheets("はがき印刷").PrintPreview
を下記の印刷に変更するとプレビューなしで連続印刷を実行します。
Sheets("はがき印刷").PrintOut

実際にやって見ると、プレビューで確認しながら印刷できるのと、操作も分かり易いのでお試しいただきたと思います。



Homeへ > Excelでアプリケーションソフト2 > 顧客管理ソフトを作ってみよう

シートのVBAコード

下記のVBAコードを追加してください。

'はがき印刷の開始処理と終了処理
Private Sub ExHagakiPrintStart()
    Dim s1 As String
    Dim i As Integer
    Dim lrow As Long
    Dim lmaxrow As Long
    Dim n As Long
    Dim dat As String

    CommandButton1.Enabled = False
    CommandButton2.Enabled = False
    CommandButton3.Enabled = False
    CommandButton4.Enabled = False
    CommandButton5.Enabled = False
    CommandButton6.Enabled = False
    CommandButton7.Enabled = False

    lrow = 5
    lmaxrow = Sheets("顧客一覧").Range("O65536").End(xlUp).Row
    
    Do
        If Sheets("顧客一覧").Range("O" & lrow) <> "" Then
        
            '宛先郵便番号
            n = 1
            dat = ActiveSheet.Cells(lrow, 6)
            For i = 1 To 8
                s1 = Mid(dat, i, 1)
                If s1 <> "-" And s1 <> "-" Then
                    Sheets("はがき印刷").Shapes("〒" & n).TextFrame.Characters.Text = s1
                    n = n + 1
                End If
                If n >= 8 Then
                    Exit For
                End If
            Next
    
            '住所1、住所2
            dat = ActiveSheet.Cells(lrow, 7)
            s1 = ActiveSheet.Cells(lrow, 8)
            If s1 <> "" Then
                dat = dat & vbCrLf & s1
            End If
            dat = Replace(dat, "-", "│")
            dat = Replace(dat, "-", "│")
            Sheets("はがき印刷").Shapes("宛先住所").TextFrame.Characters.Text = dat
    
            '名前
            dat = ActiveSheet.Cells(lrow, 2) & vbCrLf & ActiveSheet.Cells(lrow, 3) & vbCrLf
            dat = dat & ActiveSheet.Cells(lrow, 4) & " " & ActiveSheet.Cells(lrow, 13)
            Sheets("はがき印刷").Shapes("宛先名前").TextFrame.Characters.Text = dat
        
            Sheets("はがき印刷").PrintPreview
        End If
        lrow = lrow + 1
        If lrow > lmaxrow Then
            Exit Do
        End If
    Loop
    
    CommandButton1.Enabled = True
    CommandButton2.Enabled = True
    CommandButton3.Enabled = True
    CommandButton4.Enabled = True
    CommandButton5.Enabled = True
    CommandButton6.Enabled = True
    CommandButton6.Enabled = True
    CommandButton7.Enabled = True
End Sub


下記のVBAコードに変更してください。
'はがき連続印刷
Private Sub CommandButton7_Click()
    Dim llast As Long
    
    llast = Sheets("顧客一覧").Range("o4").End(xlDown).Row
    If llast >= 65536 Then
        MsgBox "印刷したい顧客の「はがき連続印刷」列に何かマークを入力してください。"
        Exit Sub
    End If

    '印刷の開始処理
    ExPrintReady "はがき印刷", True

    '印刷の開始処理
    ExHagakiPrintStart

    '印刷の開始処理
    ExPrintReady "はがき印刷", False

End Sub


顧客一覧画面

1)「はがき連続印刷」列の印刷したい顧客に何かを入力します。
  ここでは1を入力しています。
エクセル はがき印刷

2)「はがき連続印刷」ボタンをクリックすると、印刷プレビューを開始します。

3)印刷する場合は、「印刷」ボタンをクリックします。印刷しない場合は、「閉じる」ボタンをクリックします。
  すると次の顧客に移動します。
はがき印刷 ボタン

[一人目の顧客の印刷プレビュー]
はがき印刷結果

次のマークされた[二人目の顧客の印刷プレビュー]
はがき印刷プレビュー

Homeへ > Excelでアプリケーションソフト2 > 顧客管理ソフトを作ってみよう

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved