印刷を設定するVBAコード インボイス領収書5

invorecipprinteyecatch

インボイス領収書の印刷設定のコードを作成です。
使用するプリンター環境の違いでコード作成が変わります。
なので汎用的なコードとし、設定の詳細はユーザー側で行います。

こんにちは、じゅんぱ店長(@junpa33)です。

作成したインボイス領収書を、紙化やPDF化して出力します。

領収書発行の最後の段階です。PDFで出す領収書にも対応することが出来ます。

印刷設定についての処理コード記述

invorecipprintp001

これからのVBAコードはすべて標準モジュール(Module1)に記述していきます。

単独印刷での宛名確認表示コード

単独印刷時の宛名を表示するラベルを、クリックしたときのイベントに対応する、コードをModule1に記述します。

VBA
Sub 宛名確認()
    Dim PVa As String
    Dim aR As Long
        Worksheets("発行データ入力").Select
        aR = ActiveCell.Row
        PVa = Range("D" & aR).Value
        コントロールパネル.印刷宛名.Caption = PVa
End Sub

aRの値を取り出すActiveCellとは、領収書を発行するデータを、選択した時のアクティブな状態のセルのことです。

プリントページを設定するコード

印刷時の余白設定をコード化しておきます。

VBA

Sub プリントページ設定()
    With Worksheets("インボイス領収書")
'上余白を0cmに設定
        .PageSetup.TopMargin = Application.CentimetersToPoints(0)
'右余白を0cmに設定
        .PageSetup.RightMargin = Application.CentimetersToPoints(0)
'左余白を0cmに設定
        .PageSetup.LeftMargin = Application.CentimetersToPoints(0)
'下余白を0cmに設定
        .PageSetup.BottomMargin = Application.CentimetersToPoints(0)
'ページ中央水平 ON
        .PageSetup.CenterHorizontally = True
'ページ中央垂直ON
        .PageSetup.CenterVertically = True
    End With
End Sub

単独印刷を実行するコード

「印刷スタート」ボタンをクリック

マルチページの連続印刷ページで「印刷スタート」ボタンをクリックしたときに、実行されるイベントに対応したコードを記述します。

VBA

Sub 一件を印刷()
        Call Module1.プリントページ設定
        Call Module1.インボイス領収書作成
        Worksheets("インボイス領収書").PrintOut from:=1, To:=2, _
                                                    Preview:=True
        Worksheets("発行データ入力").Select
End Sub

「印刷スタート」ボタンをクリックすると、いきなり印刷されるのではありません。

それぞれの印刷環境によってコード設定も変更する必要もありますので、

この単独印刷モードにおいては、プリントプレビューを表示して、プリンターの設定をユーザーサイドで行っていただけるようにしています。

連続印刷を実行するコード

連続印刷する場合は、最初に伝票番号の入力にエラーがないかをチェックするコードを設置します。

この連続印刷モードでは、プリントプレビューは表示しません。プリントプレビュー表示を設定すると ” 連続 ” ではなくなってしまうからです。

「入力確認」ボタンをクリック

「入力確認」ボタンをクリックすると、テキストボックスで入力した番号が、正しいものかどうかを調べます。

つまり、Module1側のコードで、発行データ入力シートにあるデータと照らし合わせます。また、昇順規制になっているのに降順になっていないかをチェックします。

VBA
Sub 領収書連続印刷準備()
        ErrNo = 0
        STA = StrConv(コントロールパネル.伝票番号始点.Value, _
                                                        vbNarrow)
        STO = StrConv(コントロールパネル.伝票番号終点.Value, _
                                                        vbNarrow)
        Worksheets("発行データ入力").Select
        On Error GoTo Err_trap1
        Arow = WorksheetFunction.Match(Val(STA), Range("A:A"), 0)
        On Error GoTo Err_trap2
        Orow = Application.WorksheetFunction.Match(Val(STO), _
                                                Range("A:A"), 0)
        If Arow > Orow Then
           MsgBox "伝票番号は昇順で指定してください。", _
                            vbExclamation, "インボイス領収書作成"
           Exit Sub
        End If
        Exit Sub
Err_trap1:
        MsgBox "印刷開始伝票番号が存在していません。", _
                            vbExclamation, "インボイス領収書作成"
        コントロールパネル.伝票番号始点.Value = ""
        コントロールパネル.伝票番号終点.Value = ""
        ErrNo = 1
        Exit Sub
Err_trap2:
        MsgBox "印刷終了伝票番号が存在していません。", _
                            vbExclamation, "インボイス領収書作成"
        コントロールパネル.伝票番号始点.Value = ""
        コントロールパネル.伝票番号終点.Value = ""
        ErrNo = 1
End Sub

「印刷スタート」ボタンをクリック

「印刷スタート」ボタンをクリックすることで連続印刷が可能になります。

インフォメーション

この「印刷スタート」ボタンは、単独印刷ページと連続印刷ページのものでは全くの別物になっています。

ボタン名(Caption)だけ同名にしているだけです。

このモードは、プリントプレビューを経由しないので、印刷実行前に、アクティブプリンター側の設定をしておく必要があります。さもないと、ちょっとイラッとすることがあるかもしれません。

VBA
Sub 領収書連続印刷実行()
    Dim n As Long
        Call Module1.領収書連続印刷準備
        If ErrNo = 1 Then Exit Sub
        For n = Arow To Orow
            Worksheets("発行データ入力").Select
            Range("A" & n).Select
            Call Module1.インボイス領収書作成
            Worksheets("インボイス領収書").PrintOut from:=1, To:=2
        Next n
        Worksheets("発行データ入力").Select
        コントロールパネル.伝票番号始点.Value = ""
        コントロールパネル.伝票番号終点.Value = ""
End Sub

印刷用紙を選ぶ

印刷するには用紙を準備する必要があります。テンプレートで合わせているサイズはA6サイズです。

コピー用紙などはグラム数が少なくてペラペラ系ですし、A6サイズとなると・・・

自分がいつもお世話になっているのは、

ペーパーミツヤマさんのA6サイズの書籍用紙になります。淡いクリーム色で厚みもあります。(今はこれしか使っていません。)

詳しくは、こちらで

ペーパーミツヤマ 書籍用紙 淡クリーム104.7g/㎡ A6 2000枚

紙に印刷ではなく、PDFで送信する場合もあるでしょう。

その場合は、単独印刷モードでプリントプレビューが表示されたときに、プリンターをPDFプリンターに変更し手順に従ってPDF化してください。連続印刷モードではPDF印刷を行うことは出来ません。

まとめ

invorecipprintp002

これで、インボイス領収書作成作業は終わりです。

お疲れさまでした。

次回は、最初からの取り扱い説明とダウンロードを行なえる記事を予定しています。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min