作成した帳票を印刷します。その印刷設定をエクセルVBAで行います。
設定項目は多くあります。その都度設定とフォントサイズ、ネームなど常時設定を区別して使い分けます。
こんにちは、じゅんぱ店長(@junpa33)です。
今回も販売に関わる(見積書、納品書、請求書)3点伝票を自動で作成するエクセルソフトを組み立てていきます。
先回仕上げた帳票をプリントアウトできるように設定していきます。
印刷に関わる設定は、多岐に細かく設定することが出来ます。利用頻度に合わせ、細部のプリント設定はその都度、ソフト使用時に調整を行うということも考えておきましょう。
本文に進む前に、先回の記事を確認するにはこちら↓からになります。
VBAでデータ移動と計算を行う。ヒューマンエラーを減らす見積書納品書請求書作成の記事編成
- 見積書納品書請求書作成ソフトの使い方とダウンロード
- 見積書納品書請求書作成ソフトの作成概略
コンテンツ
印刷時のプリントミスを少なくする方法
資料や帳票を印刷する時、「一回でピシっと印刷完了!」とはいかないことも結構あります。
- 「あっ、ここに表示させないとだめだ。」と再印刷
- 「フッターの設定忘れた」と再印刷
- 「文字表示が途中で切れている」と再印刷
- 「フォントサイズ」が違と再表示
できなかった理由はいろいろあります。
自分のコンディションが悪いときなどは、ミス印刷が3枚4枚。プリンターが裏紙製造機になってしまいますよね。
資料や帳票を印刷を始める前に行えることは、
ご自分で印刷設定をする項目のチェックリストを作って、ミスを防止するという方法です。
例えば、印刷する時にその印刷前に設定しておく項目をリスト化しておきましょう。
- ヘッダーに「発行番号」を付ける
- フッターに「ページ番号」を付ける
- 「品名」が途中で表示切れしないようにする
- 「品名」の文字サイズを変更できるようにする
- フォントの種類を変更できるようにする
- 印刷ページ変わりの先頭に「項目欄」を表示する
このような項目をチェックして必ず調整していれば、再印刷はしなくてすむでしょう。チェック表を作りましょう。
エクセルVBAで印刷設定を自動化する
「プリント設定のチェック表」よりも更に効果的なのは、やはり印刷設定を自動化して手作業の介入を少なくすることでしょう。
それでは、この記事での本題「エクセルVBAで印刷設定を自動化」を行うためのVBAコードを組み立てて行きます。
常時設定の項目として、
- プリントタイトル設置
- 印刷範囲の設定
- ページ番号
- フォントサイズ
- フォント名
の設定を行います。
設定項目ごとに記述していきます。
VBAコードはModule3に記述していきます。新たにモジュールを挿入してください。
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
印刷するデータが使うページ数の最後の行数を計算します。
プリントタイトルを設定すると行数が増えますので、その分を修正します。
RoundUpとRoundDown関数の使い方。数値の切り方に注意請求書、納品書、見積書の各シートに印刷範囲を設定していきます。
プリントタイトルの設定を行います。
With~End Withの使い方。VBAコードを簡潔に記述するフッターの中央に印刷ページを印字します。
帳票の「行NO.」、「数量」、「単位」、「単価」など「品名」以外の項目のフォントサイズを固定します。
部分的にフォントの大きさが変わっていても印刷時には再統一できます。
「税込合計」、「以下余白」のフォントサイズは11に設定しています。
ユーザーフォームで、フォントの種類を選べるようにします。
フォント名取得は、ユーザーフォームのコンボボックスの選択された値から入手します。
「MS Pゴシック」、「MS P明朝」、「游ゴシック」から選択します。
選択しなければ「MS Pゴシック」になります。
プレビュー画面を表示します。
実際に印刷を実行するには、プレビュー画面の印刷ボタンより行います。
印刷設定VBAコードの実行結果
実際にこのVBAコードを実行するとこのようになります。
1ページ目
2ページ目
印刷設定のVBA まとめ
帳票を作成してほっと一息。あとは印刷ボタンを押すだけ。と思いますが、・・・。
帳票を作成できても、印刷を行う時には、印刷物をより見やすくするための設定項目がいろいろとありました。
恐らくは、普段の手作業調整でも同じことを行っているのでしょうが、その都度設定を考えなくても、多くのことをVBAが自動的に設定してくれるようにになりました。
次回は、作成した帳票を保存するVBAコードを組み立てて行きます。
次の記事に進むのはこちら↓になります。
作成帳票の保存は、必要個所をマクロなしエクセルブックでエクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。