EXCEL VBA 請求書・領収書の作成・自動判定・自動押印(電子印鑑)丸印・角印(テクニック)
EXCEL VBA 請求書・領収書の作成・自動判定・自動押印(電子印鑑)丸印・角印(テクニック)
今回説明するサンプルプログラムは、以前紹介した「EXCEL VBA 請求書の作成・一覧表からの請求書発行・・・」の機能追加したサンプルプログラムです。機能を追加した部分は、【請求一覧】のデータから自動判定して、請求印と領収印及び担当者の印影を挿入してPDFやプリンターへ出力する機能です。データの登録条件により、自動的に押印処理が出来るので、大量に発行する際には、押印処理が省けるのでその分、業務の効率化が図られます。それでは、順番に説明いたします。
●【今回のプログラムは、【請求書の作成・一覧表からの請求書発行】の内容を引用して作成していますので、請求書作成の全体部分については、、下記を参照して下さい】
EXCEL VBA 請求書の作成・一覧表からの請求書発行・作成「印刷・PDF・ワークシート別・差し込み印刷」(テクニック)
EXCEL VBA 請求書・領収書の角印(電子印鑑)を自動判定にて自動押印しPDF出力します。
下記のサンプルプログラムは、請求書や領収書で使用する角印を出力するデータに応じて、自動判定して角印を自動押印(挿入)するサンプルプログラムです。2パターンのプログラムを作成しており、一つ目は請求書・領収書をPDF化するバージョンともう一つは、プリンター等へ紙に出力する2パターンを作成しています。また、担当者の個別の丸印にも対応しているので、担当者が押印せずに、請求書・領収書を発行する事が出来ます。
【プログラム説明】
・ワークシート名「請求一覧」に登録されているデータ、D列に「担当者」・P列に「区分」が登録されています。このD列とP列のデータを元に電子印を自動押印します。
・ワークシート名「請求一覧」・・・下表の一覧表(請求書・領収書発行に必要なデータが登録されています)
・ワークシート名「請求書・領収書」・・・請求書・領収書の雛形として利用します。(請求書・領収書を発行する時にデータを転記します。)
・
【電子印種類】
電子印種類 | 印影 |
---|---|
請求印 | |
領収印 | |
鈴木 | |
佐藤 | |
高橋 | |
伊藤 | |
田中 |
・区分【P列】には、請求書・領収書が登録されています【請求書】は、・・・請求印 : 【領収書】は、・・・領収印
・担当者【D列】は、各担当者の氏名が登録されていますので、該当する氏名の丸印を請求書・領収書に反映します。
【請求書・領収書】印影場所の事前設定
【プログラム実行条件】
・ワークシート名「請求一覧」・・・請求書・領収書を発行する元となる情報が登録します。「A列からP列まで」
・ワークシート名「請求書・領収書」・・・請求書・領収書の雛形を作成します。
・角印「請求印・領収印」及び丸印「個人印」は、C:\印鑑ファイル ⇒ フォルダーに保存する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
' '''******** AKIRA55.COM ******* https://akira55.com/electronic_stamp/ ' Sub 請求書_領収書発行_PDFファイル出力() '自動判定にて電子印鑑を押印・PDFファイルに出力 Dim ws01, ws02 As Worksheet Dim L, I, Con, lRow, mRow As Long Dim RC As Integer Dim myFile, HankoFile As String Dim Image_del As Picture Set ws01 = Worksheets("請求一覧") Set ws02 = Worksheets("請求書・領収書") lRow = ws01.Cells(Rows.Count, "B").End(xlUp).Row '社員コードの最終行を取得 HankoFile = "C:\印鑑ファイル" '印鑑ファイルの保存先 For I = 2 To lRow '請求書・領収書を印刷する枚数をカウントします。 If ws01.Cells(I, "O") <> "済" Then Con = Con + 1 '発行「済み」以外をカウントします。 End If Next I RC = MsgBox("請求書・領収書を発行します。 " & Con & "枚分印刷しますか?", vbYesNo + vbQuestion, "確認") If RC = vbNo Then MsgBox "処理を中断します" Exit Sub 'プログラムを終了します。 End If myFile = ThisWorkbook.Path & "\" 'ブックと同じ場所をPDFの保存先に指定します。 For I = 2 To lRow 'シート「請求一覧」の最終行まで印刷を行います。 If ws01.Cells(I, "O") <> "済" Then '印刷済み以外の請求書を印刷します。 '------------------------------------------------------ 'ワークシート(請求一覧)⇒ ワークシート(請求書・領収書)へデータ転記する。 If ws01.Cells(I, "P") = "請求書" Then ws02.Range("区分") = "請求書" '表題に請求書を指定 Else ws02.Range("区分") = "領収書 " '表題に領収書を指定 End If ws02.Range("請求NO") = ws01.Cells(I, "A") ws02.Range("請求先") = ws01.Cells(I, "B") ws02.Range("件名") = ws01.Cells(I, "C") ws02.Range("項目①") = ws01.Cells(I, "E") ws02.Range("数量①") = ws01.Cells(I, "F") ws02.Range("単価①") = ws01.Cells(I, "G") ws02.Range("項目②") = ws01.Cells(I, "H") ws02.Range("数量②") = ws01.Cells(I, "I") ws02.Range("単価②") = ws01.Cells(I, "J") ws02.Range("項目③") = ws01.Cells(I, "K") ws02.Range("数量③") = ws01.Cells(I, "L") ws02.Range("単価③") = ws01.Cells(I, "M") ws02.Range("備考") = ws01.Cells(I, "N") For Each Image_del In ws02.Pictures '印鑑削除 Image_del.Delete Next Image_del With ws02.Pictures.Insert(HankoFile & "\" & ws01.Cells(I, "P") & ".png") '角印挿入 .Top = ws02.Range("角印").Top .Left = ws02.Range("角印").Left .Width = ws02.Range("H20:I24").Width End With With ws02.Pictures.Insert(HankoFile & "\" & ws01.Cells(I, "D") & ".png") '担当印挿入 .Top = ws02.Range("担当者").Top .Left = ws02.Range("担当者").Left .Width = ws02.Range("I17:I18").Width End With '- ws02.PrintOut From:=1, To:=1 '請求書を印刷(1ページ)----------------------------------------------------- ws02.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myFile & ws02.Range("請求先") & "-" & ws02.Range("区分") & ".pdf" '請求書をPDFへ出力 ws01.Cells(I, "O") = "済" '印刷後、「印刷済み」=「済」にする End If Next I End Sub ' |
(画面クリックして拡大)
EXCEL VBA 請求書・領収書の角印(電子印鑑)を自動判定にて自動押印しプリンターへ出力します。
下記のサンプルプログラムは、上記のサンプルプログラムと同じ条件で請求書・領収書の角印・丸印を自動判定して、印影を挿入しプリンターへ出力するサンプルプログラムです。
全体的には、【プログラム説明(サンプル①)】と同じプログラムなので、サンプル①を参照して下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
' '******** AKIRA55.COM ******* https://akira55.com/electronic_stamp/ ' Sub 請求書_領収書発行_紙に出力() 'プリンターに出力(紙) Dim ws01, ws02 As Worksheet Dim L, I, Con, lRow, mRow As Long Dim RC As Integer Dim myFile, HankoFile As String Dim Image_del As Picture Set ws01 = Worksheets("請求一覧") Set ws02 = Worksheets("請求書・領収書") lRow = ws01.Cells(Rows.Count, "B").End(xlUp).Row '社員コードの最終行を取得 HankoFile = "C:\印鑑ファイル" '印鑑ファイルの保存先 For I = 2 To lRow '請求書・領収書を印刷する枚数をカウントします。 If ws01.Cells(I, "O") <> "済" Then Con = Con + 1 '発行「済み」以外をカウントします。 End If Next I RC = MsgBox("請求書・領収書を発行します。 " & Con & "枚分印刷しますか?", vbYesNo + vbQuestion, "確認") If RC = vbNo Then MsgBox "処理を中断します" Exit Sub 'プログラムを終了します。 End If myFile = ThisWorkbook.Path & "\" 'ブックと同じ場所をPDFの保存先に指定します。 For I = 2 To lRow 'シート「請求一覧」の最終行まで印刷を行います。 If ws01.Cells(I, "O") <> "済" Then '印刷済み以外の請求書を印刷します。 '------------------------------------------------------ 'ワークシート(請求一覧)⇒ ワークシート(請求書・領収書)へデータ転記する。 If ws01.Cells(I, "P") = "請求書" Then ws02.Range("区分") = "請求書" '表題に請求書を指定 Else ws02.Range("区分") = "領収書 " '表題に領収書を指定 End If ws02.Range("請求NO") = ws01.Cells(I, "A") ws02.Range("請求先") = ws01.Cells(I, "B") ws02.Range("件名") = ws01.Cells(I, "C") ws02.Range("項目①") = ws01.Cells(I, "E") ws02.Range("数量①") = ws01.Cells(I, "F") ws02.Range("単価①") = ws01.Cells(I, "G") ws02.Range("項目②") = ws01.Cells(I, "H") ws02.Range("数量②") = ws01.Cells(I, "I") ws02.Range("単価②") = ws01.Cells(I, "J") ws02.Range("項目③") = ws01.Cells(I, "K") ws02.Range("数量③") = ws01.Cells(I, "L") ws02.Range("単価③") = ws01.Cells(I, "M") ws02.Range("備考") = ws01.Cells(I, "N") For Each Image_del In ws02.Pictures '印鑑削除 Image_del.Delete Next Image_del With ws02.Pictures.Insert(HankoFile & "\" & ws01.Cells(I, "P") & ".png") '角印挿入 .Top = ws02.Range("角印").Top .Left = ws02.Range("角印").Left .Width = ws02.Range("H20:I24").Width End With With ws02.Pictures.Insert(HankoFile & "\" & ws01.Cells(I, "D") & ".png") '担当印挿入 .Top = ws02.Range("担当者").Top .Left = ws02.Range("担当者").Left .Width = ws02.Range("I17:I18").Width End With ws02.PrintOut From:=1, To:=1 '請求書又は、領収書を印刷(1ページ)---------- ws01.Cells(I, "O") = "済" '印刷後、「印刷済み」=「済」にする End If Next I End Sub ' |
EXCEL VBA 請求書の作成・一覧表からの請求書発行・作成「印刷・PDF・ワークシート別・差し込み印刷」(テクニック)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。