作成した帳票の印刷設定はVBAで自動化できる

hyohyoineyecatch

作成した帳票を印刷します。その印刷設定をエクセルVBAで行います。
設定項目は多くあります。その都度設定とフォントサイズ、ネームなど常時設定を区別して使い分けます。

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

今回も販売に関わる(見積書、納品書、請求書)3点伝票を自動で作成するエクセルソフトを組み立てていきます。

先回仕上げた帳票をプリントアウトできるように設定していきます。

印刷に関わる設定は、多岐に細かく設定することが出来ます。利用頻度に合わせ、細部のプリント設定はその都度、ソフト使用時に調整を行うということも考えておきましょう。

本文に進む前に、先回の記事を確認するにはこちら↓からになります。

santenden_tyoueyecatch VBAでデータ移動と計算を行う。ヒューマンエラーを減らす

見積書納品書請求書作成の記事編成

印刷時のプリントミスを少なくする方法

hyohyoinsatup003

資料や帳票を印刷する時、「一回でピシっと印刷完了!」とはいかないことも結構あります。

  • 「あっ、ここに表示させないとだめだ。」と再印刷
  • 「フッターの設定忘れた」と再印刷
  • 「文字表示が途中で切れている」と再印刷
  • 「フォントサイズ」が違と再表示

できなかった理由はいろいろあります。

自分のコンディションが悪いときなどは、ミス印刷が3枚4枚。プリンターが裏紙製造機になってしまいますよね。

資料や帳票を印刷を始める前に行えることは、

ご自分で印刷設定をする項目のチェックリストを作って、ミスを防止するという方法です。

例えば、印刷する時にその印刷前に設定しておく項目をリスト化しておきましょう。

  • ヘッダーに「発行番号」を付ける
  • フッターに「ページ番号」を付ける
  • 「品名」が途中で表示切れしないようにする
  • 「品名」の文字サイズを変更できるようにする
  • フォントの種類を変更できるようにする
  • 印刷ページ変わりの先頭に「項目欄」を表示する

このような項目をチェックして必ず調整していれば、再印刷はしなくてすむでしょう。チェック表を作りましょう。

エクセルVBAで印刷設定を自動化する

hyohyoinsatup004

「プリント設定のチェック表」よりも更に効果的なのは、やはり印刷設定を自動化して手作業の介入を少なくすることでしょう。

それでは、この記事での本題「エクセルVBAで印刷設定を自動化」を行うためのVBAコードを組み立てて行きます。

常時設定の項目として、

  1. プリントタイトル設置
  2. 印刷範囲の設定
  3. ページ番号
  4. フォントサイズ
  5. フォント名

の設定を行います。

設定項目ごとに記述していきます。

VBAコードはModule3に記述していきます。新たにモジュールを挿入してください。

VBAコード全体はこれです

vbalastcelleyecatch データ入力済セルの最終行番号を取得する
VBA
Option Explicit

Sub 印刷設定()
    Dim SaRow, KeRow, NRow As Long
    Dim a, s, b As Long
    Dim Fsa, Fsb As Variant         '操作パネルデータを使用
        Worksheets("作業シート").Select
        SaRow = Cells(Rows.Count, 2).End(xlUp).Row
'印刷の範囲を調べる
        If SaRow < 27 Then
            KeRow = 39
        Else
            KeRow = 39 + Application.WorksheetFunction. _
                        RoundUp((SaRow - 26) / 35, 0) * 35
        End If
'プリントタイトル行数を除いた行数
        NRow = KeRow - Application.WorksheetFunction. _
                        RoundUp((KeRow - 39) / 35, 0)
'印刷範囲を設定
        For a = 2 To 4
            Worksheets(a).Select
            With Worksheets(a)
                    .PageSetup.PrintArea = False
                    .PageSetup.PrintTitleRows = "$13:$13"
                If KeRow = 39 Then
                    .PageSetup.PrintArea = "A1:G39"
                Else
                    .PageSetup.PrintArea = "A1:G" & NRow
                End If
'ページ番号
                .PageSetup.CenterFooter = "&P"
'固定のフォントサイズ(品名以外)
                .Range(Cells(14, 3), Cells(KeRow, 7)) _
                            .Font.Size = 11
                .Range(Cells(14, 1), Cells(KeRow, 1)) _
                            .Font.Size = 10
'品名のフォント
                Fsa = 操作パネル.品名F.Value
                If Fsa = "" Then
                    Fsa = 10
                Else
                    Fsa = Val(Fsa)
                End If
                .Range(Cells(14, 2), Cells(KeRow, 2)) _
                            .Font.Size = Fsa
'顧客名のフォント
                Fsb = 操作パネル.顧客F.Value
                If Fsb = "" Then
                    Fsb = 13
                Else
                    Fsb = Val(Fsb)
                End If
                .Range("B6").Font.Size = Fsb
'注記・項目のフォントサイズ
                For s = 14 To KeRow
                    If .Cells(s, 2) = "税込合計" Or _
                                .Cells(s, 2) = "以下余白" Then
                        .Cells(s, 2).Font.Size = 11
                    End If
                Next s
'フォント種選択(ユーザーフォームから選択)
                If 操作パネル.ComboBox1.Value = "" Then
                    .Cells.Font.Name = "MS Pゴシック"
                Else
                    .Cells.Font.Name = 操作パネル.ComboBox1.Value
                End If
            End With
        Next a
'プレビュー画面を表示
        For b = 2 To 4
            Worksheets(b).PrintPreview
        Next b
'自動保存設定
        If 操作パネル.CheckBox3 = True Then
            Call Module4.伝票保存
        End If
End Sub

印刷の範囲を調べる

印刷するデータが使うページ数の最後の行数を計算します。

プリントタイトルを設定すると行数が増えますので、その分を修正します。

vbaroundupdowneyecatch RoundUpとRoundDown関数の使い方。数値の切り方に注意

印刷範囲を設定

請求書、納品書、見積書の各シートに印刷範囲を設定していきます。

プリントタイトルの設定を行います。

vbawithstateeyecatch With~End Withの使い方。VBAコードを簡潔に記述する

ページ番号

フッターの中央に印刷ページを印字します。

固定のフォントサイズ(品名以外)

帳票の「行NO.」、「数量」、「単位」、「単価」など「品名」以外の項目のフォントサイズを固定します。

部分的にフォントの大きさが変わっていても印刷時には再統一できます。

注記・項目のフォントサイズ

「税込合計」、「以下余白」のフォントサイズは11に設定しています。

フォント種選択(ユーザーフォームから選択)

ユーザーフォームで、フォントの種類を選べるようにします。

フォント名取得は、ユーザーフォームのコンボボックスの選択された値から入手します。

「MS Pゴシック」、「MS P明朝」、「游ゴシック」から選択します。

選択しなければ「MS Pゴシック」になります。

プレビュー画面を表示

プレビュー画面を表示します。

実際に印刷を実行するには、プレビュー画面の印刷ボタンより行います。

印刷設定VBAコードの実行結果

実際にこのVBAコードを実行するとこのようになります。

1ページ目

hyohyoinsatu001

2ページ目

hyohyoinsatu002

印刷設定のVBA まとめ

hyohyoinsatup005

帳票を作成してほっと一息。あとは印刷ボタンを押すだけ。と思いますが、・・・。

帳票を作成できても、印刷を行う時には、印刷物をより見やすくするための設定項目がいろいろとありました。

恐らくは、普段の手作業調整でも同じことを行っているのでしょうが、その都度設定を考えなくても、多くのことをVBAが自動的に設定してくれるようにになりました。

次回は、作成した帳票を保存するVBAコードを組み立てて行きます。

次の記事に進むのはこちら↓になります。

3denpyohozoneyecatch 作成帳票の保存は、必要個所をマクロなしエクセルブックで

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

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

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

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

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

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