作成したのし書きの印刷を行うVBAと別シートに保管するエクセルVBAコードを解説します。
また、起動については、設定シート上のコマンドボタンから行います。
こんにちは、じゅんぱ店長(@junpa33)です。
のし書き作成エクセルで、のし紙サイズ別に印刷プレビューを表示し印刷を行います。
また、作成したのし書きは、別シートに名前を付けて保管、再利用できるようにします。
のし書き作成エクセルの記事編成
- のし書き作成エクセルの使い方とダウンロード
- のし書き作成エクセルの作成手順
コンテンツ
のし書きの印刷と別シートに保管するVBAを作成
のし書きサイズ別「印刷プレビュー表示」を行うVBA
のし書きの印刷プレビューを実行するには、「設定」シートに設置したコマンドボタンから行います。
フォームコントロールをシートに設置 のし書き作成エクセルにて解説しています。
'E38セルにコマンドボタン設置
With .Range("E38:F39")
With ws.Buttons.Add(.Left, .Top, _
.Width, .Height)
.Name = "のし印刷"
.OnAction = "熨斗テンプレベースB"
With .Characters
.Text = "のしを印刷する"
With .Font
.Size = 15
.Bold = True
.ColorIndex = 5
End With
End With
End With
End With
前回の説明の続きで、のし紙別に「のし書きテンプレート」を完成させるところから解説します。
のし紙のサイズは選択肢として、
- A5サイズ
- A4サイズ
- B5サイズ
- B4サイズ
- 熨斗封筒
を準備しています。
記述はModule1で行います。
パブリック変数として出てくる「RaとCa」はセル位置の起点、「RbとCb」はセル位置の終点を表しています。
このセルの視点・終点の間に贈り主名が表示されることになります。なおこの変数は、呼び出す「Module1.複数併記スペース」部品プロシージャーで使用されます。(先回説明)
設定項目の選択値を整理してVBAコードに反映させる用紙サイズは、「xlPaperA5」で指定することが出来ます。
Sub A5サイズ版()
ThisWorkbook.Activate
With Worksheets("のし書きBase")
'A5サイズにサイズセット
.PageSetup.PrintArea = "A1:AG31"
.PageSetup.PaperSize = xlPaperA5
'送り主表記セル位置を変数に代入
Ra = 19
Ca = 16
Rb = 31
Cb = 19
With .Range("P1:S12")
.Merge
.Value = KNa
.Font.Size = FSia
.ShrinkToFit = True
End With
Call Module1.複数併記スペース
Call Module1.贈り主縦位置
Call Module1.贈り主文字の制御
'プリントプレビューを表示します
.PrintPreview
End With
End Sub
用紙サイズは、「xlPaperA4」で指定することが出来ます。
Sub A4サイズ版()
ThisWorkbook.Activate
With Worksheets("のし書きBase")
'A4サイズにサイズセット
.PageSetup.PrintArea = "A1:AX46"
.PageSetup.PaperSize = xlPaperA4
'送り主表記セル位置を変数に代入
Ra = 28
Ca = 24
Rb = 45
Cb = 27
With .Range("X2:AA19")
.Merge
.Value = KNa
.Font.Size = FSia
.ShrinkToFit = True
End With
Call Module1.複数併記スペース
Call Module1.贈り主縦位置
Call Module1.贈り主文字の制御
'プリントプレビューを表示します
.PrintPreview
End With
End Sub
用紙サイズは、「xlPaperB5」で指定することが出来ます。
Sub B5サイズ版()
ThisWorkbook.Activate
With Worksheets("のし書きBase")
'B5サイズにサイズセット
.PageSetup.PrintArea = "A1:AP39"
.PageSetup.PaperSize = xlPaperB5
'送り主表記セル位置を変数に代入
Ra = 25
Ca = 20
Rb = 38
Cb = 23
With .Range("T2:W16")
.Merge
.Value = KNa
.Font.Size = FSia
.ShrinkToFit = True
End With
Call Module1.複数併記スペース
Call Module1.贈り主縦位置
Call Module1.贈り主文字の制御
'プリントプレビューを表示します
.PrintPreview
End With
End Sub
用紙サイズは、「xlPaperB4」で指定することが出来ます。
Sub B4サイズ版()
ThisWorkbook.Activate
With Worksheets("のし書きBase")
'B4サイズにサイズセット
.PageSetup.PrintArea = "A1:BK57"
.PageSetup.PaperSize = xlPaperB4
'送り主表記セル位置を変数に代入
Ra = 35
Ca = 30
Rb = 56
Cb = 33
With .Range("AC2:AH22")
.Merge
.Value = KNa
.Font.Size = FSia
.ShrinkToFit = True
End With
Call Module1.複数併記スペース
Call Module1.贈り主縦位置
Call Module1.贈り主文字の制御
'プリントプレビューを表示します
.PrintPreview
End With
End Sub
用紙サイズは、熨斗封筒(90x175mm)の設定です。
「PaperSize = 267」の267番は、設定するプリンター環境によって違います。各自ユーザー設定で指定してください。
Sub 封筒版()
ThisWorkbook.Activate
With Worksheets("のし書きBase")
'熨斗封筒サイズにサイズセット
.PageSetup.PrintArea = "A1:BK57"
.PageSetup.PaperSize = 267
.PageSetup.Orientation = xlPortrait
'送り主表記セル位置を変数に代入
Ra = 24
Ca = 4
Rb = 38
Cb = 6
With .Range("D2:F15")
.Merge
.Value = KNa
.Font.Size = FSia
.ShrinkToFit = True
End With
Call Module1.複数併記スペース
Call Module1.贈り主縦位置
Call Module1.贈り主文字の制御
'プリントプレビューを表示します
.PrintPreview
End With
End Sub
上記の規格サイズののし紙でない場合は、使用しているプリンターでユーザー用紙設定を行ってください。
登録した用紙サイズをVBAに反映させるためには、
「 .PageSetup.PaperSize = 267」の「267」の番号を変更します。
この番号は、使用しているプリンター環境での固有番号になります。
番号を調べるためには、プリンターへのユーザー用紙の登録後、以下のVBAを実行します。
Sub 設定用定数値()
Worksheets("のし書きBase").Select
MsgBox "用紙設定 定数値は 「 " & Worksheets("のし書きBase") _
.PageSetup.PaperSize & " 」 です。", vbOKOnly, "のし書き作成"
End Sub
入手した番号をVBAコードに入力します。
また「RaとCa」のセル位置の起点、「RbとCb」のセル位置の終点の修正も必要です。
作成したのし書きを別シートに保管するVBA
のし書きの別シート保管を実行するには、「設定」シートに設置したコマンドボタンから行います。
フォームコントロールをシートに設置 のし書き作成エクセルにて解説しています。
'E42セルにコマンドボタン設置
With .Range("E41:F42")
With ws.Buttons.Add(.Left, .Top, _
.Width, .Height)
.Name = "のし保存"
.OnAction = "熨斗シート保存"
With .Characters
.Text = "のしを保存する"
With .Font
.Size = 15
.Bold = True
.ColorIndex = 5
End With
End With
End With
End With
End With
作成したのし書きは、一度きりの使い道のみの場合だけでなく、再利用したい時、定期的に使いたい場合もあるかと思います。
毎回同じものを作ってもいいですが、一度作ったものを保管しておくことが出来ればこれに越したことはありません。
コードはModule3に記述しています。
Option Explicit
Sub 熨斗シート保存()
Dim ws As Worksheet
Dim NewName As String
Dim Flg As Boolean
Flg = False
'インプットボックスから保管用のシート名を入力します
NewName = InputBox("保管用ののし書きのシート名を決めてください", _
Title:="のし書き作成")
If NewName = "" Then
MsgBox "シートの保管を中止します。", vbExclamation, _
"のし書き作成"
Exit Sub
End If
'入力した名前がすでに存在するかどうかを調べます
For Each ws In Worksheets
If ws.Name = NewName Then
Flg = True
Exit For
End If
Next
'すでに名前が存在する場合は終了します
If Flg = True Then
MsgBox "同名のシートが既にあります。" & vbCrLf & _
"別のシート名にしてください。終了します。", _
vbExclamation, "のし書き作成"
Exit Sub
Else
'同名のシートがない場合、シートタブの右端にテンプレートのコピーを作成
Worksheets("のし書きBase").Copy _
after:=Worksheets(Sheets.Count)
'コピーしたシートを入力したシート名にします
Set ws = ActiveSheet
ws.Name = NewName
End If
End Sub
インプットボックスに保管用のシート名を指定します。
コピーした印刷テンプレートシートをそのシート名で保存します。
同名のシート名があった場合は、処理を中止し終了する設定にします。
保存用のシート名を入力するのは、「InputBox」を利用します。
2つのインプットボックス。関数とメソッド、特徴を生かした使い分け シートの存在を確認する2種類のコードと実務での例題 VBA 回数不定のループ処理はDo LoopとFor Eachシートのコピーについては、こちら↓の記事が参考にできます。
シートのコピーを最速に理解!VBAコードで異なる結果まとめ
のし書き作成で、印刷プレビューと別名で保管する方法を説明しました。
印刷するときは、印刷プレビューで表示されたものを最終確認して、修正する場合は直接シート上で変更することも出来ます。
また、別名保管すれば、一度作成したのし書きを保管して再利用出来るようになります。
その点でも、最初から作り直さないので、「グッと業務効率が上がる」のではないでしょうか。
ただ、保存シートの数が多くなって来た時には、
リサイクルで使いたい保存シートを探すのが大変になってくると思います。
その時の解決策として、
存在するシート名の一覧表(リスト)を新たなリストに表示させ、
そのリスト中のシート名を指定することで、
「その指定したシートを一発で表示する」という方法で解決できます。
そのためのエクセルVBAコードを組み立てる必要がありますが、参考になる記事をあげておきます。
エクセルシートの並び順が思い通り!シート名一覧で自由自在 シート名一覧表作成マクロをブック登録して色んなエクセルで使う エクセル多用途もくじシートを自動作成するVBAエクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。