見出し画像

送付状自動印刷マクロの作り方とダウンロード

宛先の異なる送付状をまとめて編集、印刷したい!

こんな要望にお応えします。

この記事では、送付状自動印刷マクロを作成するための考え方やポイントを詳しく解説。

書類作成業務の効率を少しでもアップさせたい!と考えている方は是非参考にしてみてください。


また、マクロの作成なんてできない!コードを書いている時間なんてない!という方は記事の最後をチェックしてください。

送付状自動印刷マクロをダウンロードすることができます。

設定されている送付状の様式、編集内容でよければ、すぐにでもマクロを利用することが可能です。


送付状作成業務でお困りの方は是非この記事を参考にしてみてください。


送付状自動印刷マクロとは


送付状自動印刷マクロとは、

「氏名」「住所」「会社名」など 編集が必要な項目を自動編集し印刷する

というものです。


いろんな取引先に請求書や領収書を送付する際一緒に送付状を添付しているという方におすすめです。


送付状に記載されている挨拶文などは使いまわすけど、「宛先」「日付」などの情報は編集しなければならない

このような感じで業務を進めているなら絶対に「送付状自動印刷マクロ」を導入すべきです。

作業スピードのアップ以外に編集ミスや印刷ミスを防止することがるので、メリットしかありません。


サンプル事例としてご紹介する「送付状」がこちら

「日付」「宛先」「送付資料」「その他」の情報を編集することが可能です。

情報が異なる送付状をまとめて印刷できることが大きな特徴です。

送付状自動印刷マクロを使って非効率的な書類作成業務の効率をアップさせてみてください。


送付状自動印刷マクロの使い方


送付状に必要な基本情報を「設定」シートに記入


送付状シートの「日付」「No」を入力し実行ボタンを押下

使い方はこれで完了

マクロを実行すると、

「設定」シートに記入した情報が「送付状」シートに転記され印刷される

というプログラミングになっています。


処理としてはこんな感じ

「送信日」と「No」から送付状を作成、印刷することができるので、送付状を印刷したい件数が変動しても臨機応変に対応可能です。


送付状自動印刷マクロの作り方

コードを作り込むだけで送付状自動印刷マクロが完成するわけではありません。

業務内容の確認、様式の作成、コードの作成、などの手順が必要です。

送付状自動印刷マクロの作成に必要な手順をご紹介します。


業務内容の確認

まずはじめに業務内容の確認を行います。

  • 送付状の様式はどのようにするのか

  • 送付状にはどんな情報が必要なのか

  • 送付状を作成するタイミング

「様式が間違っていた」「送付状に記入する項目が足りなかった」

というやり直し作業が発生してしまうと効率が悪いので、様式の作成前に最初にしっかり計画を経てましょう。

計画を経てるためには現状の業務内容をしっかり確認することが必要です。


送付状の様式作成

次に送付状の様式を作成します。

「会社名」「氏名」「日付」「 特記事項」 など、どのような情報が必要なのかしっかり考えて様式を設定してください。


様式作成のポイントは

業務を進めいくうちに様式の変更が発生しないようにしっかりと計画を練る

です。


余白やスペースの大きさの確認も大切。

あとで「全体のバランスが悪いから余白を増やそう」といった修正が発生するとかなりめんどうなことになります。


様式はコードの作成を手がける前に確定させてしまいましょう。


今回のサンプル事例で紹介している送付状の様式は、

「送信日」「宛先」「件名」「挨拶文」「添付資料説明」「その他記載事項」

の情報を記入。

シンプルな様式ですが、送付状に必要とされる情報は全て設定されています。


送付状の様式をどんなものにすればいいのか悩んでいる!と言う方は参考にしてみてください。


マクロの作成

「業務内容の確認」「様式の確定」この2つが終わったあとにマクロを作成していきます。

今回の送付状自動印刷マクロに使われているマクロは、

「別シートに情報を転記するマクロ」と「自動で印刷を実行するマクロ」の2つです。


特に「別シートに情報を転記するマクロ」はいろんなエクセル作業に応用できるものなので、ぜひ使い方をマスターしましょう。

詳しい解説記事はこちら


送付状自動印刷マクロのコード

送付状自動印刷マクロのサンプルコードがこちら

Sub 印刷マクロ()
'''Sheetの設定'''
Dim Ash As Worksheet
Dim Bsh As Worksheet
Set Ash = ThisWorkbook.Worksheets("宛先一覧")
Set Bsh = ThisWorkbook.Worksheets("送付状")
Dim Num1, Num2 As Long
Num1 = Ash.Cells(5, 17)
Num2 = Ash.Cells(5, 19)
''''''''''''''''転記番号を入力'''''''''''''''''''''''
For j = Num1 + 2 To Num2 + 2
    ''''''''''''''''印刷番号が入力されているときに実行'''''''''''''''''''''''
If Num1 <> 0 And Num2 <> 0 And Ash.Cells(j, 9) = "" Then
Bsh.Range(Bsh.Cells(2, 4), Bsh.Cells(7, 5)).ClearContents
Bsh.Range(Bsh.Cells(22, 3), Bsh.Cells(24, 4)).ClearContents
Bsh.Range(Bsh.Cells(28, 3), Bsh.Cells(30, 4)).ClearContents
'''''日付を転記'''''
Bsh.Cells(1, 8) = Ash.Cells(3, 17)
'''''郵便番号を転記'''''
Bsh.Cells(2, 4) = Ash.Cells(j, 7)
Bsh.Cells(2, 4).HorizontalAlignment = xlLeft
'''''住所を転記'''''
Bsh.Cells(3, 4) = Ash.Cells(j, 8)
Bsh.Cells(3, 4).HorizontalAlignment = xlLeft
'''''会社名を転記'''''
Bsh.Cells(4, 4) = Ash.Cells(j, 4)
Bsh.Cells(4, 4).HorizontalAlignment = xlLeft
'''''部署を転記'''''
Bsh.Cells(5, 4) = Ash.Cells(j, 5)
Bsh.Cells(5, 4).HorizontalAlignment = xlLeft
'''''氏名を転記'''''
Bsh.Cells(6, 4) = Ash.Cells(j, 6)
Bsh.Cells(6, 4).HorizontalAlignment = xlLeft
Bsh.Cells(6, 5) = "様"
'''''「宛先一覧」シートの送付資料①を転記'''''
If Ash.Cells(j, 10) <> "" Then
Bsh.Cells(22, 3) = "1)"
Bsh.Cells(22, 4) = Ash.Cells(j, 10)
Bsh.Cells(22, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートの送付資料②を転記'''''
If Ash.Cells(j, 11) <> "" Then
Bsh.Cells(23, 3) = "2)"
Bsh.Cells(23, 4) = Ash.Cells(j, 11)
Bsh.Cells(23, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートの送付資料③を転記'''''
If Ash.Cells(j, 12) <> "" Then
Bsh.Cells(24, 3) = "3)"
Bsh.Cells(24, 4) = Ash.Cells(j, 12)
Bsh.Cells(24, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ①を転記'''''
If Ash.Cells(j, 13) <> "" Then
Bsh.Cells(28, 3) = "1)"
Bsh.Cells(28, 4) = Ash.Cells(j, 13)
Bsh.Cells(28, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ②を転記'''''
If Ash.Cells(j, 14) <> "" Then
Bsh.Cells(29, 3) = "2)"
Bsh.Cells(29, 4) = Ash.Cells(j, 14)
Bsh.Cells(29, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ③を転記'''''
If Ash.Cells(j, 15) <> "" Then
Bsh.Cells(30, 3) = "3)"
Bsh.Cells(30, 4) = Ash.Cells(j, 15)
Bsh.Cells(30, 4).HorizontalAlignment = xlLeft
Else
End If
'''''''''「送付状」シートを選択
Bsh.Select
'''''''''印刷範囲を選択
ActiveSheet.PageSetup.PrintArea = ("A1:I40")
ActiveSheet.PrintPreview
'ActiveSheet.PrintOut
ElseIf Num1 <> 0 And Num2 <> 0 And Ash.Cells(j, 9) <> "" Then
Bsh.Range(Bsh.Cells(2, 4), Bsh.Cells(7, 5)).ClearContents
Bsh.Range(Bsh.Cells(22, 3), Bsh.Cells(24, 4)).ClearContents
Bsh.Range(Bsh.Cells(28, 3), Bsh.Cells(30, 4)).ClearContents
'''''日付を転記'''''
Bsh.Cells(1, 8) = Ash.Cells(3, 17)
    '''''郵便番号を転記'''''
Bsh.Cells(2, 4) = Ash.Cells(j, 7)
Bsh.Cells(2, 4).HorizontalAlignment = xlLeft
 '''''住所1を転記'''''
Bsh.Cells(3, 4) = Ash.Cells(j, 8)
Bsh.Cells(3, 4).HorizontalAlignment = xlLeft
'''''住所2を転記'''''
Bsh.Cells(4, 4) = Ash.Cells(j, 9)
Bsh.Cells(4, 4).HorizontalAlignment = xlLeft
'''''会社を転記'''''
Bsh.Cells(5, 4) = Ash.Cells(j, 4)
Bsh.Cells(5, 4).HorizontalAlignment = xlLeft
'''''部署を転記'''''
Bsh.Cells(6, 4) = Ash.Cells(j, 5)
Bsh.Cells(6, 4).HorizontalAlignment = xlLeft
'''''氏名を転記'''''
Bsh.Cells(7, 4) = Ash.Cells(j, 6)
Bsh.Cells(7, 4).HorizontalAlignment = xlLeft
Bsh.Cells(7, 5) = "様"
'''''「宛先一覧」シートの送付資料①を転記'''''
If Ash.Cells(j, 10) <> "" Then
Bsh.Cells(22, 3) = "1)"
Bsh.Cells(22, 4) = Ash.Cells(j, 10)
Bsh.Cells(22, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートの送付資料②を転記'''''
If Ash.Cells(j, 11) <> "" Then
Bsh.Cells(23, 3) = "2)"
Bsh.Cells(23, 4) = Ash.Cells(j, 11)
Bsh.Cells(23, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートの送付資料③を転記'''''
If Ash.Cells(j, 12) <> "" Then
Bsh.Cells(24, 3) = "3)"
Bsh.Cells(24, 4) = Ash.Cells(j, 12)
Bsh.Cells(24, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ①を転記'''''
If Ash.Cells(j, 13) <> "" Then
Bsh.Cells(28, 3) = "1)"
Bsh.Cells(28, 4) = Ash.Cells(j, 13)
Bsh.Cells(28, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ②を転記'''''
If Ash.Cells(j, 14) <> "" Then
Bsh.Cells(29, 3) = "2)"
Bsh.Cells(29, 4) = Ash.Cells(j, 14)
Bsh.Cells(29, 4).HorizontalAlignment = xlLeft
Else
End If
'''''「宛先一覧」シートのその他お知らせ③を転記'''''
If Ash.Cells(j, 15) <> "" Then
Bsh.Cells(30, 3) = "3)"
Bsh.Cells(30, 4) = Ash.Cells(j, 15)
Bsh.Cells(30, 4).HorizontalAlignment = xlLeft
Else
End If
'''''''''「送付状」シートを選択
Bsh.Select
'''''''''印刷範囲を選択
ActiveSheet.PageSetup.PrintArea = ("A1:I40")
ActiveSheet.PrintPreview
'ActiveSheet.PrintOut
End If
Next
End Sub

最後から4行目と5行目が印刷を実行するコードになっています。

サンプルコードでは、「印刷プレビューを表示し実際の印刷はしない」という処理になっています。

プレビューを確認してコードが完成してからコードを修正してください。


コードの設定方法

①VBAを開く


②標準モジュールを作成する


③「Module1」にサンプルコードをコピペ


④ボタンを作成


⑤作成したボタンにマクロを設定

これでマクロの設定は完了です。

割と簡単ですので是非試してみてください。


送付状自動印刷マクロのダウンロード


送付状自動印刷マクロが設定されたエクセルファイルをダウンロードしてお使いいただくことができます。

どんな仕事にも対応できるようなシンプルな様式が設定されているので是非使ってみてください。


仕事の関係上どうしても送付状の様式を変更したい!という方は「マメBlogマクロ開発」からお問合せください。

様式の変更、マクロの改修、追加機能の設定など対応させていただきます。

マメBlogのマクロ開発依頼はこちら


では、下記で「送付状自動印刷マクロ」が設定されたエクセルファイルをダウンロードして業務の効率化をアップさせてください。

ここから先は

106字 / 1ファイル
この記事のみ ¥ 500

この記事が気に入ったらチップで応援してみませんか?