印刷設定を行うエクセルVBAで、無用なプリントミスをなくす方法

hyohyoineyecatch

苦労してやっと作成した書面。

ホッとして印刷ボタンを押しますが、印刷設定が不足でプリントミスに。

思い当たるところも多いハズ。ここはエクセルVBAで、無用なプリントミスをなくしましょう。

 

引き続き販売に関する帳票(見積書、納品書、請求書)を自動で作成するエクセルソフトの組み立てについてです。

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

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

 

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

データ移動と計算のVBAコード。数行のコード記述で簡潔にできる

 

見積書・納品書・請求書作成に関する記事はこちらです。

「見積書納品書請求書作成」の記事一覧を開く

 

印刷設定で失敗!の経験アリ

 

資料や帳票を印刷する時、一回でピシっと完了、ではないことがそこそこありますよね。

「あっ、ここに表示させないとだめだ。」と再印刷

「フッターの設定忘れた」と再印刷

「文字表示が途中で切れている」と再印刷

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

 

印刷をミスしないようにするには

 

資料や帳票を印刷を始める前に行う事、

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

例えば、今回作っている請求納品見積書の帳票で言うと、印刷する時にその印刷前に設定しておく項目のリストです。

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

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

 

悩める君

えっ?この記事のテーマは伝票の自動作成じゃなかった?

手作業で修正調整するのは自動化じゃないよね!

ごもっとも

じゅんぱ店長

 

エクセルVBAで印刷設定を記述する

 

それでは、これからVBAコードを組み立てて行きます。

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

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

VBAコード全体はこれです

 

Sub 印刷設定()

 

Dim SaRow As Long, KeRow As Long, NRow As Long

Dim a As Long, s As Long, b As Long

 

  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.RightHeader = CN

 

‘ページ番号
        .PageSetup.CenterFooter = “&P”

 

‘固定のフォントサイズ(品名以外)
        .Range(Cells(14, 3), Cells(KeRow, 7)).Font.Size = 11
        .Range(Cells(14, 1), Cells(KeRow, 1)).Font.Size = 10

    End With

 

‘注記・項目のフォントサイズ
  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.ListIndex = 0 Then
      Cells.Font.Name = “MS Pゴシック”
    ElseIf 宛名印刷設定.ComboBox1.ListIndex = 1 Then
      Cells.Font.Name = “MS P明朝”
    ElseIf 宛名印刷設定.ComboBox1.ListIndex = 2 Then
      Cells.Font.Name = “游ゴシック”
    Else
      Cells.Font.Name = “MS Pゴシック”
    End If

  Next a

 

‘プレビュー画面を表示
  For b = 2 To 4
    Worksheets(b).PrintPreview
  Next b

 

End Sub

 

MEMO

入力セルの最終行を取得する方法はこちらを参考にしてください。

エクセルVBA データ入力済セルの最終行番号を取得する方法

 

印刷の範囲を調べる

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

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

 

MEMO

RoundUp関数、RoundDown関数の使い方についてはこの記事を参考にしてください。

エクセルVBA 数値の切り上げ、切り捨てに要注意「RoundUpとRoundDown関数」

 

印刷範囲を設定

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

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

 

MEMO

With~End Withの使い方については、この記事を参考にしてください。

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

 

帳票作成番号

右ヘッダーに帳票の作成管理番号を印刷できるようにします。

印刷か空欄か、管理番号の設定は任意にします。

ユーザーフォームから指定するようにします。

 

ページ番号

印刷ページを印字します。

 

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

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

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

 

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

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

 

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

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

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

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

 

プレビュー画面を表示

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

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

 

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

 

1ページ目 2ページ目
hyohyoinsatu001 hyohyoinsatu002

 

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

取り合えず「印刷設定」プロシージャーを実行するには、フォント種選択の部分のコードで、

どれか1つのフォントに限定して、それ以外のコードは「シングルクォーテーション(’)」でコメント化(実行無効)にしてください。

 

印刷設定VBA まとめ

 

されど印刷設定という感じでした。

帳票本体を作成してほっと一息。あとは印刷ボタンを押すだけ。

と、言うような気がしていましたが、このように結構多くの項目調整をしなければいけませんでした。

恐らくは、普段の手作業調整でも同じことを行っているのでしょうが、

これで、その都度都度に考えなくても、エクセルが自動的に設定してくれることになりました。

 

後で作るユーザーフォームと連携しますので、後にコード修正を行う部分がありますのでご注意ください。

 

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

 

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

Excel帳票のデータ保存はVBA誤動作の対策を必ずしよう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておくといい内容を纏めてみました。

「VBA最速理解」の記事一覧を開く

 

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

 

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