連続印刷するマクロの作り方【内容が異なる書類をまとめて印刷可能】
こんな要望にお応えします。
結論からいうと、
転記マクロと印刷マクロを組み合わせた連続印刷マクロを導入する
です。
「連続印刷」と聞くと、
〇ページを〇部印刷する処理をマクロを使って処理する
と思われるかと思います。
しかし、この記事で紹介する連続印刷マクロは、
「書類の内容を編集して印刷する」行為を繰り返し行う
処理のことを言います。
イメージはこんな感じ
この記事では、
決められた様式の書類で、内容の内容を編集して印刷を繰り返すことができるマクロ
について詳しく解説しています。
エクセルを利用する仕事でめちゃくちゃ使えるマクロなので、
エクセル作業の効率をアップさせたいという方は是非参考にしてもてください。
連続印刷マクロとはどういうもの?
冒頭でも説明していますがこの記事で紹介する連続印刷マクロとは、
決められた様式の書類で、入力内容の異なる書類をまとめて印刷する
というものです。
下記の動画では、連続印刷マクロがどのような処置をするのか詳しく解説されています。
連続印刷マクロは次のような流れで処理が進んでいきます。
- テキストボックスに入力された値から一覧表シートから工事契約書シートに情報が転記される
- 転記が終わると工事契約書シートが印刷される
- 次のテキストボックスに入力された値から一覧表シートから工事契約書シートに情報が転記される
- 転記が終わると工事契約書シートが印刷される
連続印刷マクロに必ず設定しなければならない項目は、
- 印刷する書類の様式
- 基本情報を入力する一覧表
- 様式に応じたマクロ
の3つです。
工事契約書の様式
一覧表の構成
転記VBAの動き
ユーザーフォームのテキストボックスに工事番号を入力すると、その工事番号の情報が工事契約書に転記されます。
今回はテキストボックスを5個用意してあるので5件分の工事契約書を連続で転記し、印刷することが可能。
工事番号を入力 → 転記 → 印刷という作業を一瞬で処理することができます。
下記の記事では、連続印刷マクロが設定されたエクセルファイルをダウンロードしてお使いいただくことが可能です。
印刷業務の効率をアップさせたいと考えている方は是非使ってみてください。
連続印刷マクロの作り方
「工事契約書を連続印刷するマクロ」をサンプルとして、マクロの設定方法を詳しくご紹介していきます。
1.様式設定
「工事契約書様式」「一覧表様式」の作り方は上記を参考にしてください。
様式設定では「どのような様式に、どのような項目を転記させるか」が確定するのでしっかり時間をかけて様式設定を行ってください。
例えば、
「工事名」が入力されるセルは「H6セル」
「工事場所」が入力されるセルは「H8セル」
に固定する。
様式の変更などで入力場所が変われば、変更に応じて設定したマクロも変更しなければなりません。
入力場所の変更は結構手間のかかる作業なので、
作業中に変更が発生しないよう様式は一番初めにしっかり確定してしまいましょう。
2.VBAを起動
3.標準モジュールを作成
4.ModuleにVBAを記入
5.サンプルVBA(Module)
Sub 工事契約書転記()
Dim Ash As Worksheet
Dim Bsh As Worksheet
Set Ash = ThisWorkbook.Worksheets("一覧表")
Set Bsh = ThisWorkbook.Worksheets("工事契約書")
For j = 1 To 5
If UserForm1("TextBox" & j).Value <> "" Then
i = UserForm1("TextBox" & j).Value
Bsh.Range("H6") = Ash.Cells(i + 2, 2)
Bsh.Range("H6").HorizontalAlignment = xlLeft
Bsh.Range("H8") = Ash.Cells(i + 2, 3)
Bsh.Range("H8").HorizontalAlignment = xlLeft
Bsh.Range("H10") = Ash.Cells(i + 2, 4)
Bsh.Range("H10").HorizontalAlignment = xlCenter
Bsh.Range("H10").NumberFormatLocal = "ggge年m月d日"
Bsh.Range("P10") = Ash.Cells(i + 2, 5)
Bsh.Range("P10").HorizontalAlignment = xlCenter
Bsh.Range("P10").NumberFormatLocal = "ggge年m月d日"
Bsh.Range("L12").HorizontalAlignment = xlCenter
Bsh.Range("L12") = Ash.Cells(i + 2, 6)
Bsh.Range("L12").NumberFormatLocal = "#,###"
Bsh.Range("R14") = Bsh.Range("L12").Value * 0.1
Bsh.Range("R14").HorizontalAlignment = xlCenter
Bsh.Range("R14").NumberFormatLocal = "#,###"
Bsh.Range("J33") = Ash.Cells(i + 2, 8)
Bsh.Range("J33").HorizontalAlignment = xlLeft
Bsh.Range("J35") = Ash.Cells(i + 2, 7)
Bsh.Range("J35").IndentLevel = 2
Bsh.Range("J37") = Ash.Cells(i + 2, 10)
Bsh.Range("J37").HorizontalAlignment = xlLeft
Bsh.Range("J39") = Ash.Cells(i + 2, 9)
Bsh.Range("J39").IndentLevel = 2
ActiveSheet.PageSetup.PrintArea = ("A1:X39")
ActiveSheet.PrintPreview
Else
End If
Next
End Sub
連続印刷マクロでは、
「別シートに情報を転記するマクロ」と「For~Nextを使った繰り返し処理」
がメインで使われています。
下記の記事では、ぞれぞれのVBAの詳しい解説が紹介されているので、
連続印刷マクロの理解を深めたい!という方は是非参考にしてみてください。
6.ユーザーフォームの作成
7.ユーザーフォーム(オブジェクトの作成)
8.ユーザーフォームにVBAを記入
9.サンプルVBA(ユーザーフォーム)
Private Sub CommandButton1_Click()
Dim Ash As Worksheet
Dim Bsh As Worksheet
Set Ash = ThisWorkbook.Worksheets("一覧表")
Set Bsh = ThisWorkbook.Worksheets("工事契約書")
Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String
Dim a5 As String
a1 = TextBox1.Value
a2 = TextBox2.Value
a3 = TextBox3.Value
a4 = TextBox4.Value
a5 = TextBox5.Value
Call 工事契約書転記
End Sub
10.実行
ユーザーフォームのボタンをクリックしてVBAを実行すると、指定した工事番号の書類をいっきに印刷することができます。
紹サンプルVBAでは、プリントアウトするのではなく印刷プレビューを表示させる設定になっています。
連続印刷マクロは仕事に導入すべきVBA
連続印刷マクロは一覧表シートから決められた様式へ入力事項を転記し、印刷するVBAです。
このVBAは決められた様式を使って資料作成をする!という業務に導入することができ、私の職場ではかなり使用頻度の高いVBAです。
連続印刷マクロには以下のようなメリットがあります。
- 過去の情報をすぐ参照できる
- 数式が壊されることがない
- ミスプリントを減らせる
私の職場では、伝票作成業務にも連続印刷マクロが導入されています。
「一覧表から請求書や納品書に情報を転記し、印刷する」という内容で、
今回紹介している連続印刷マクロとほとんど同じマクロが導入されています。
請求書や領収書、納品書のように
似たような様式の書類をまとめて出力したい!
というときに連続印刷マクロはとても有効です。
動画で紹介している「伝票作成マクロ」では、
「会社名」から情報を転記させるパターンと「会社名と作成日」から情報を転記させるパターン
に対応したマクロを設定しています。
取引が多い会社の場合、「会社名と作成日」から出力した方が効率的です。
伝票作成VBAについては下記の記事で詳しく紹介しているので、気になる方は是非参考にしてみてください。
連続印刷VBAを導入することで、エクセル操作が不得意な方の書類作成の精度とスピードが上がり職場全体の作業効率をアップさせることができました。
決められた様式の書類を印刷する業務がある方に連続印刷マクロはおすすめです。
これからVBAを勉強をはじめるには
連続印刷VBAのように、VBAには仕事の効率をアップさせることができる機能がいろいろあります。
VBAのプログラミングスキルを身に着けることで、今まで何時間もかかかっていた作業をほんの数分で処理することができるようになります。
VBAを基本から学びたい!という方におすすめなのが、オンラインプログラミング学習サービス【1st Step】です。
【1st Step】は初心者のためのプログラミング学習サービスで、C言語・java・VBAの3つのプログラミングの基礎をオンラインで勉強することができます。
- 基礎からプログラミングを勉強したい
- まとまった勉強時間の確保が難しい
- 途中で挫折したくない
上記のように考えている方に【1st Step】はおすすめです。
下記の記事では、オンラインプログラミング学習サービス【1st Step】の特徴や私の体験など詳しく紹介しています。
これからVBAの勉強を始めようと考えている方は是非参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません