苦労してやっと作成した書面。
ホッとして印刷ボタンを押しますが、印刷設定が不足でプリントミスに。
思い当たるところも多いハズ。ここはエクセル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
印刷の範囲を調べる
印刷するデータが使うページ数の最後の行数を計算します。
プリントタイトルを設定すると行数が増えますので、その分を修正します。
印刷範囲を設定
請求書、納品書、見積書の各シートに印刷範囲を設定していきます。
プリントタイトルの設定を行います。
帳票作成番号
右ヘッダーに帳票の作成管理番号を印刷できるようにします。
印刷か空欄か、管理番号の設定は任意にします。
ユーザーフォームから指定するようにします。
ページ番号
印刷ページを印字します。
固定のフォントサイズ(品名以外)
帳票の「行NO.」、「数量」、「単位」、「単価」など「品名」以外の項目のフォントサイズを固定します。
部分的にフォントの大きさが変わっていても印刷時には再統一できます。
注記・項目のフォントサイズ
「税込合計」、「以下余白」のフォントサイズは11に設定しています。
フォント種選択(ユーザーフォームから選択)
ユーザーフォームで、フォントの種類を選べるようにします。
「MS Pゴシック」、「MS P明朝」、「游ゴシック」から選択します。
選択しなければ「MS Pゴシック」になります。
プレビュー画面を表示
プレビュー画面を表示します。
実際に印刷を実行するには、プレビュー画面の印刷ボタンより行います。
印刷設定VBAコードの実行結果
1ページ目 | 2ページ目 |
![]() |
![]() |
実際にこのVBAコードを実行するとこのようになります。
取り合えず「印刷設定」プロシージャーを実行するには、フォント種選択の部分のコードで、
どれか1つのフォントに限定して、それ以外のコードは「シングルクォーテーション(’)」でコメント化(実行無効)にしてください。
印刷設定VBA まとめ
されど印刷設定という感じでした。
帳票本体を作成してほっと一息。あとは印刷ボタンを押すだけ。
と、言うような気がしていましたが、このように結構多くの項目調整をしなければいけませんでした。
恐らくは、普段の手作業調整でも同じことを行っているのでしょうが、
これで、その都度都度に考えなくても、エクセルが自動的に設定してくれることになりました。
後で作るユーザーフォームと連携しますので、後にコード修正を行う部分がありますのでご注意ください。
次回は、作成した帳票を保存するVBAコードを組み立てて行きます。
次の記事に進むのはこちら↓になります。
Excel帳票のデータ保存はVBA誤動作の対策を必ずしよう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要
エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。
エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておくといい内容を纏めてみました。
今回の記事はここまでです。 最後までご覧いただき有難うございました。