
【Excel】ボタンのクリックでリストを元に単票印刷するマクロを作ってみる
業務の改善に取り組んでいる中で、毎月、請求先リストを作成し、そのリストに沿って宛名や金額といった内容の請求書を一枚一枚作成して印刷しているのを、時間短縮したいという相談を受けたので、「差し込み印刷のような印刷マクロを組めばいいのでは?」と提案。
かくいうワタシも Excel は不得意なので探りながらではありましたが、単にリストから必要なデータを拾って連続印刷できるように出来たので、その手順などを備忘録としてポストしておきます。
「開発」リボンの表示
マクロを作成するには、Excelに「開発」というリボンを表示させないことには始まりません。
まずは開発リボンを表示するところから始めます。
↑ 一番左の「ファイル」から、「オプション」をクリック
↑ 「リボンのユーザー設定」を選択し、右ブロックのメインタブ欄の「開発」にチェックして、[OK]ボタンクリック
↑ 開発リボンが表示されました
印刷ボタンとマクロ内容の作成
シート1に以下のような、非常に簡単な印刷用の単票を作成します。
シート名を「単票」とします。
今回はテストのため小さめに作っていますが、通常はA4用紙いっぱいになるようなものが一般的でしょう。
↑ 単票
下ような単純なリストをシート2に用意します。
シート名を「リスト」とします。
↑ リスト
単票シートへ、開発リボンの「挿入」 → ボタンを作成し、マクロの登録ウィンドウを開きます
↑ 印刷の範疇外になる位置(AKあたり)へボタンを配置
下画像では「ボタン1_Click」となっていますが、数字はボタンを設置している数によるので、3とか4になる場合もあります。
マクロの保存先は、現在編集中の Book1 としておきます。
↑ マクロの登録ウィンドウ
[新規作成]ボタンをクリックすると VisualBasic の編集画面が開くので、以下を記述します。
Sub ボタン1_Click() から、End Subの間に、命令を記述していく感じです。
↑ 編集画面
[default]
Sub ボタン1_Click()
'画面のちらつきを防止する
Application.ScreenUpdating = False
'リストワークシートを選択する
Worksheets("リスト").Activate
'まずリストシートのセルA1をアクティブセルにする
Range("A1").Select
'ループXの開始
Do
'アクティブセルを1つ下に移動する
ActiveCell.Offset(1, 0).Select
'空欄であれば、プログラムを終了する
'Trim関数は前後のスペースを消去する
If Trim(ActiveCell.Value) = "" Then
Exit Do
End If
'非表示セルは印刷の対象としない
If ActiveCell.EntireRow.Hidden = False Then
'これ以降、すべて「単票」シート
With Worksheets("単票")
'レコードの先頭セルを選択
.Range("D4").Value = ActiveCell.Offset(0, 0).Value '氏名
.Range("G6").Value = ActiveCell.Offset(0, 2).Value '単価
.Range("G7").Value = ActiveCell.Offset(0, 1).Value '消費税
.Range("G8").Value = ActiveCell.Offset(0, 1).Value '請求金額
'レコードの最終セルであれば、1部印刷を実行する
.PrintOut
'印刷用シート終了
End With
End If
'ループXの終了
Loop
'画面のちらつきを防止する
Application.ScreenUpdating = True
End Sub
[/default]
記述が終わるとこんな感じ。
↑ シングルクォーテーションから始まる行がコメントとなります
保存
ファイルを保存する場合は、Excelマクロ有効ブック(.xlsm)で保存します。
↑ マクロ対応のファイル形式で保存
注意
「ボタン1」となっているボタンの名称や位置を変更したい場合は、対象ボタンの上でマウスを右クリックすると編集できます。
マクロの編集画面を再度表示したい場合は、開発リボンの左から2番めの「マクロ」をクリックするとマクロの登録ウィンドウが開くので、対象のマクロを選択し、「編集」ボタンを押せば、開きます。
まとめ
上記で作成したマクロはプレビューもなにもない、リストを単票印刷する機能しかありません。
なので、機能追加する場合は以下のサイトなどを読んで改造です。
普段はPHPとHTML, Javascriptが専門なのでExcelなどあまり触らないのですが、これはこれでなかなか楽しい制作でした。
https://tech.nikkeibp.co.jp/it/pc/article/NPC/20070301/263710/?P=2
http://www.atmarkit.co.jp/ait/articles/1403/25/news038.html