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

Step 16 シール印刷の実行

実際にシール印刷を実行します。
シール印刷開始位置が指定できるよう、コンボボックスを追加し選択できるようにしました。
「シール印刷」列にマークし、「シール印刷」ボタンをクリックすると印刷を開始します。
1)シェイプの枠線を消します。
2)印刷マークが入力されているかチェックします。
3)コンボボックスの値を印刷開始位置にします。
4)印刷マークがある顧客の、郵便番号・住所・名前をシェイプに代入します。
5)次の印刷マークの顧客へ移動します。
6)これを10枚まで繰り返します。



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

ブックコード

下記のVBAコードを追加してください。
シール枚数を1~10にしています。

Private Sub Workbook_Open()
    'リストをクリア
    Sheets("顧客一覧").ComboBox1.Clear
    Sheets("顧客一覧").ComboBox1.AddItem "1"
    Sheets("顧客一覧").ComboBox1.AddItem "2"
    Sheets("顧客一覧").ComboBox1.AddItem "3"
    Sheets("顧客一覧").ComboBox1.AddItem "4"
    Sheets("顧客一覧").ComboBox1.AddItem "5"
    Sheets("顧客一覧").ComboBox1.AddItem "6"
    Sheets("顧客一覧").ComboBox1.AddItem "7"
    Sheets("顧客一覧").ComboBox1.AddItem "8"
    Sheets("顧客一覧").ComboBox1.AddItem "9"
    Sheets("顧客一覧").ComboBox1.AddItem "10"
    Sheets("顧客一覧").ComboBox1 = "1"
End Sub

シートのVBAコード

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

'シール印刷
Private Sub CommandButton6_Click()
    Dim llast As Long
    
    llast = Sheets("顧客一覧").Range("N4").End(xlDown).Row
    If llast >= 65536 Then
        MsgBox "印刷したい顧客の「シール印刷」列に何かマークを入力してください。"
        Exit Sub
    End If

    '印刷の開始処理
    ExSealPrintStart True

End Sub

'印刷の開始処理と終了処理
Private Sub ExSealPrintStart(sw As Boolean)
    Dim s1 As String
    Dim i As Integer
    Dim lrow As Long
    Dim lmaxrow As Long
    

    For i = 1 To 10
        Sheets("シール印刷").Shapes("シール" & i).Line.Visible = False
        Sheets("シール印刷").Shapes("シール" & i).TextFrame.Characters.Text = ""
    Next

    If Sheets("顧客一覧").ComboBox1 < 1 Or Sheets("顧客一覧").ComboBox1 > 10 Then
        Sheets("顧客一覧").ComboBox1 = 1
    End If
    
    i = Sheets("顧客一覧").ComboBox1
    lrow = 5
    lmaxrow = Sheets("顧客一覧").Range("N4").End(xlDown).Row
    Do
        If Sheets("顧客一覧").Range("N" & lrow) <> "" Then
        
            s1 = "〒" & Sheets("顧客一覧").Cells(lrow, 6) & vbCrLf
            s1 = s1 & Sheets("顧客一覧").Cells(lrow, 7) & vbCrLf
            s1 = s1 & Sheets("顧客一覧").Cells(lrow, 8) & vbCrLf & vbCrLf
            s1 = s1 & Sheets("顧客一覧").Cells(lrow, 4) & " 様"
  
            Sheets("シール印刷").Shapes("シール" & i).TextFrame.Characters.Text = s1
            i = i + 1
            If i >= 11 Then
                Exit Do
            End If
        End If
        lrow = lrow + 1
        If lrow > lmaxrow Then
            Exit Do
        End If
    Loop
        
    CommandButton1.Enabled = False
    CommandButton2.Enabled = False
    CommandButton3.Enabled = False
    CommandButton4.Enabled = False
    
    Sheets("シール印刷").PrintPreview
    
    CommandButton1.Enabled = True
    CommandButton2.Enabled = True
    CommandButton3.Enabled = True
    CommandButton4.Enabled = True

    For i = 1 To 10
        Sheets("シール印刷").Shapes("シール" & i).Line.Visible = True
    Next

End Sub


顧客一覧画面

開始位置選択用のコンボボックスを追加しています。
顧客タックシール印刷選択画面

印刷結果

1番目のシールから印刷した結果です。
印刷位置等が分かるようにシール枠を消していません。
2×5のタックシール

3番目のシールから印刷した結果です。
これは正規にシール枠を消しています。
途中からのタックシール印刷

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

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


Copyright (c) Excel-Excel ! All rights reserved