| Menuへ | ||
| Excelで表を使った顧客管理ソフトを作ってみよう | ||
Step 18 はがき連続印刷の実行 実行は下記の流れになります。 1)郵便番号・住所のシェイプ枠を消す 2)「はがき連続印刷」列のマークの最後尾行をさがします。 3)上から順にデータをセットしていきます。 ・郵便番号は1文字づつ分解し、シェイプ枠にセットします。 ・住所は縦書きになるよう、"-"を"│"に変換しセットします。 4)印刷プレビューを実行します。 印刷するか閉じるとプレビューは終了します。 5)最後の行までこれを繰り返します。 印刷プレビューの実行部分 Sheets("はがき印刷").PrintPreview を下記の印刷に変更するとプレビューなしで連続印刷を実行します。 Sheets("はがき印刷").PrintOut 実際にやって見ると、プレビューで確認しながら印刷できるのと、操作も分かり易いのでお試しいただきたと思います。 |
||
| シートコード | ||
| 下記のコードを追加してください。 'はがき印刷の開始処理と終了処理 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 下記のコードに変更してください。 'はがき連続印刷 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 |
||
| 顧客一覧画面 | ||
|
||
|
|
||
| Topへ |
||
| ■このサイトの内容を利用して発生した、いかなる問題にも一切の責任は負いませんのでご了承下さい。■ 当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します。 Copyright (c) 2006-2007 Excel-Excel ! All rights reserved. |
||