インボイス領収書の印刷設定のコードを作成です。
使用するプリンター環境の違いでコード作成が変わります。
なので汎用的なコードとし、設定の詳細はユーザー側で行います。
こんにちは、じゅんぱ店長(@junpa33)です。
作成したインボイス領収書を、紙化やPDF化して出力します。
領収書発行の最後の段階です。PDFで出す領収書にも対応することが出来ます。
インボイス領収書作成の記事編成
- インボイス領収書作成ソフトの使い方とダウンロード
コンテンツ
印刷設定についての処理コード記述
これからのVBAコードはすべて標準モジュール(Module1)に記述していきます。
単独印刷での宛名確認表示コード
単独印刷時の宛名を表示するラベルを、クリックしたときのイベントに対応する、コードをModule1に記述します。
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とは、領収書を発行するデータを、選択した時のアクティブな状態のセルのことです。
プリントページを設定するコード
印刷時の余白設定をコード化しておきます。
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
単独印刷を実行するコード
マルチページの連続印刷ページで「印刷スタート」ボタンをクリックしたときに、実行されるイベントに対応したコードを記述します。
Sub 一件を印刷()
Call Module1.プリントページ設定
Call Module1.インボイス領収書作成
Worksheets("インボイス領収書").PrintOut from:=1, To:=2, _
Preview:=True
Worksheets("発行データ入力").Select
End Sub
「印刷スタート」ボタンをクリックすると、いきなり印刷されるのではありません。
それぞれの印刷環境によってコード設定も変更する必要もありますので、
この単独印刷モードにおいては、プリントプレビューを表示して、プリンターの設定をユーザーサイドで行っていただけるようにしています。
連続印刷を実行するコード
連続印刷する場合は、最初に伝票番号の入力にエラーがないかをチェックするコードを設置します。
この連続印刷モードでは、プリントプレビューは表示しません。プリントプレビュー表示を設定すると ” 連続 ” ではなくなってしまうからです。
「入力確認」ボタンをクリックすると、テキストボックスで入力した番号が、正しいものかどうかを調べます。
つまり、Module1側のコードで、発行データ入力シートにあるデータと照らし合わせます。また、昇順規制になっているのに降順になっていないかをチェックします。
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
「印刷スタート」ボタンをクリックすることで連続印刷が可能になります。
このモードは、プリントプレビューを経由しないので、印刷実行前に、アクティブプリンター側の設定をしておく必要があります。さもないと、ちょっとイラッとすることがあるかもしれません。
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印刷を行うことは出来ません。
まとめ
これで、インボイス領収書作成作業は終わりです。
お疲れさまでした。
次回は、最初からの取り扱い説明とダウンロードを行なえる記事を予定しています。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。