エクセルVBAコードのみで帳票テンプレートを作ります。その時々のテンプレート加工を行っても、元に戻すことなく何度でも一瞬にして回復させることが出来ます。
こんにちは、じゅんぱ店長(@junpa33)です。
これからスタートするテーマです。販売に関しての伝票(見積書、納品書、請求書)を、自動で作成するソフトをエクセルVBAベースで作成していきます。
今回は第1回目として、そこに利用する伝票のテンプレートを、エクセルのシートに作成していきます。
伝票をエクセルで作って印刷出力するのに、一番大事なのがテンプレートですので、
ここはしっかり、でも、サクッと作ってしまいましょう。
見積書納品書請求書作成の記事編成
- 見積書納品書請求書作成ソフトの使い方とダウンロード
- 見積書納品書請求書作成ソフトの作成概略
コンテンツ
エクセルVBAで顧客に出す伝票を作る
エクセルを会社業務で使っている人は多いでしょう。
” 社内会議や部署内資料、データ整理用のための資料 ” を主に作っているという方もおられるでしょう。
そういった方の中でも、社内文書は大丈夫だけれど、外に出す文書や帳票はあまり得意では無い。というタイプの人。
数字や金額を集計をして、様式を整えてと、間違いの許されない請求系の文書と帳票。
トラブルがあれば、「誰が作った?」と一番に名前が上げられますし、だから出来たら、他の人にお任せしたい的な感じでしょうか?
エクセルのスキルをもっとアップさせたいと志しているなら、社外に出す帳票類を「きれいに効率よく作ること」に挑戦してみましょう。
日常業務の中で既に、エクセルで対外的な通達書・通知書などを作成しているという方も、それは単にエクセルを使った文章ということではないですか。
この記事をきっかけに、エクセルの機能を活かしながら、社外に提示する帳票作成の一連の仕組み(エクセルVBAソフト)を作ってみましょう。
チャレンジがスキルアップにつながります!
商品販売の中でも基本の伝票に「見積書」・「納品書」・「請求書」があります。
販売管理ソフトを使っている会社なら、この顧客に出す3つの伝票は専用用紙に印刷で簡単に作れます。
けれどもその中でも、顧客(官公庁など)によっては、伝票様式を3つ同じにしなければいけない場合もあります。
また今現在も、昭和の伝票的な、全て手書きで伝票を作っているなんて会社や部署もあるかもしれません。
もしそのような職場の中にあなたがいたなら、もうこれは逆に大ラッキーです。まさにチャレンジ環境です。
今回作成するテンプレート
エクセルで「伝票を自動作成するソフト」を作っていきますが、今回の作業の部分は、伝票のテンプレートづくりとなります。
テンプレートを作成するシートはこのシートです。
- 作業シート
- 見積書テンプレート
- 納品書テンプレート
- 請求書テンプレート
- 宛名の登録シート
- 電子印鑑の登録シート
この6つの項目をエクセルのシートに作成します。
特に、見積書、納品書、請求書の3つのテンプレートについては、
このテンプレートは誤って形式を崩したり削除したりしてしまうと後が大変ですので、
テンプレートをVBAコード化して最終的にはボタンワンクリックで復元できるようにします。
エクセルシートで作成する各テンプレート内容
テンプレート作成を始めていきます。
見積書、納品書、請求書の3つのテンプレート以外は、VBAコードで記述するよりも、手打ち作成の方が早くて簡単ですので、その方向で作成を進めます。
1.エクセルBOOKの準備、シートのリネーム
Microsoft Office のExcelをダブルクリックして起動してください。
「空白のブック」を選択して開きます。
(ここでMicrosoft Office自体がパソコンに導入されていない場合はこちらからスタートしてください。)
Excelの入手するための販売パッケージについては何種類かあります。
サブスクリプションと永続版があります。
Microsoft Office Personal 2021
Microsoft Office Home & Business 2021
Sheet選択タブの右の̟「+マーク」を何回かクリックしてSheet7まで作成します。
シートをリネームします。
Sheet1 | 作業シート |
Sheet2 | 請求書 |
Sheet3 | 納品書 |
Sheet4 | 見積書 |
Sheet5 | 宛名の登録 |
Sheet6 | 電子印鑑の登録 |
Sheet7 | データストック |
一旦、このエクセルBOOKを保存します。
名前を「見納請3点伝票作成.xlsm」として「Excelマクロ有効ブック」で、ご自分で分かり易い場所に保存をしてください。
2.各シートの項目欄の作成
作業シートに項目欄を作ります。
シートの1行目に
A列 43ピクセル | 通番 |
B列 558ピクセル | 品名 |
C列 72ピクセル | 数量 |
D列 72ピクセル | 単位 |
E列 72ピクセル | 単価 |
F列 72ピクセル | 金額 |
G列 72ピクセル | 備考 |
とタイプしてください。列幅は適当ですが、「品名」は広げておきましょう。
次に、宛名の登録シートに項目欄を作ります。
シートの1行目に
A列 72ピクセル | NO. |
B列 72ピクセル | 顧客番号 |
C列 590ピクセル | 宛名 |
D列 72ピクセル | 郵便番号 |
E列 250ピクセル | 住所 |
と打ち込んでください。列幅は適当ですが、「宛名」と「住所」は広げておきましょう。
電子印鑑の登録シートに登録欄を作成します。
セル位置を間違わないように画像のようにセットしてください。肝心の電子印鑑ですが、
電子印鑑の準備をするには、
が参考になります。
電子印鑑を、今使っている角印から作るには、
が参考になります。
データ入力欄はB列です。
3.見積納品請求3点伝票のテンプレートVBAの組み立て
VBAコードを使ってテンプレートを作ります。
表題が違うだけで、見積書、納品書、請求書とも様式が同じですので、共通のテンプレートとして作成します。
それぞれシートをアクティブ(開いて)にしてコードを実行します。
どこにコードを記述するかは、VBE(ビジュアルベーシックエディター)を起動するで確認できます。
(標準モジュールでModule1に記述しましょう。)
関連記事
VBA初めての起動。VBEの立ち上げ、保存と終了 シートクリアーを目的のメソッド別にVBA最速理解 With~End Withの使い方。VBAコードを簡潔に記述する 「罫線」のVBAを最速理解 「フォント」の操作を最速理解する エクセルVBAシート上でセルサイズを変更したり文字を入力したりということはありません。
このコードが保存されている限り、何度でもテンプレートの複製が可能になります。
Option Explicit
Public MRK As Integer
Sub テンプレ作成2()
Dim a As Integer
Workbooks("見納請3点伝票作成.xlsm").Activate
For a = 2 To 4
Worksheets(a).Select
With ActiveSheet
'一旦初期化
.Cells.ClearFormats
.Cells.ClearContents
.Cells.UseStandardHeight = True
.Cells.UseStandardWidth = True
.DrawingObjects.Delete
.PageSetup.PrintArea = False
.PageSetup.PrintTitleRows = False
.PageSetup.RightHeader = ""
.PageSetup.CenterFooter = ""
'行高さ設定
.Rows.RowHeight = 24
.Rows("1:12").RowHeight = 19.5
.Rows(2).RowHeight = 9
.Rows(4).RowHeight = 7.5
.Rows("7:9").RowHeight = 15.75
.Rows(10).RowHeight = 6.75
.Rows(11).RowHeight = 22.5
'列幅の設定
.Columns("A").ColumnWidth = 3.5
.Columns("B").ColumnWidth = 27.63
.Columns("C").ColumnWidth = 9.13
.Columns("D").ColumnWidth = 6.63
.Columns("E:F").ColumnWidth = 12.63
.Columns("G").ColumnWidth = 11.13
.Columns("H:I").ColumnWidth = 1.5
'セルの結合
.Range("B4:B5").Merge
.Range("B6:C7").Merge
.Range("B9:B10").Merge
'罫線の設定
.Range("B6:C7").Borders(xlEdgeBottom).LineStyle _
= xlContinuous
.Range("B11").Borders(xlEdgeBottom).LineStyle _
= xlDouble
.Range("A13:G39").Borders.LineStyle = xlContinuous
'日付の表記
With .Range("F3")
.Font.Size = 10
.Value = "令和 年 月 日"
End With
'項目の入力
.Range("A13") = "No."
.Range("B13") = "品名"
.Range("C13") = "数量"
.Range("D13") = "単位"
.Range("E13") = "単価"
.Range("F13") = "金額"
.Range("G13") = "備考"
.Rows(13).Font.Size = 11
With .Range("D1")
.Font.Size = 18
.HorizontalAlignment = xlCenter
End With
'印刷余白の設定
.PageSetup.TopMargin = Application _
.CentimetersToPoints(1.5)
.PageSetup.LeftMargin = Application _
.CentimetersToPoints(2.5)
.PageSetup.RightMargin = Application _
.CentimetersToPoints(1)
.PageSetup.BottomMargin = Application _
.CentimetersToPoints(1)
.PageSetup.HeaderMargin = Application _
.CentimetersToPoints(0.5)
.PageSetup.FooterMargin = Application _
.CentimetersToPoints(0.5)
'自社の表示設定
.Range("E5") = Worksheets("電子印鑑の登録").Range("B2")
.Range("E5").Font.Size = 14
.Range("F6") = Worksheets("電子印鑑の登録").Range("B3")
.Range("E6").Font.Size = 12
.Range("E7") = Worksheets("電子印鑑の登録").Range("B5") _
& " " & Worksheets("電子印鑑の登録").Range("B6")
.Range("E7").Font.Size = 10
.Range("F8") = Worksheets("電子印鑑の登録").Range("B7")
.Range("F8").Font.Size = 10
.Range("F9") = Worksheets("電子印鑑の登録").Range("B8")
.Range("F9").Font.Size = 10
With .Range("F11")
.Value = Worksheets("電子印鑑の登録").Range("B9")
.Font.Size = 9
.VerticalAlignment = xlTop
End With
'相手先文字ほか表示
.Range("B3").Font.Size = 10
With .Range("B4")
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
End With
With .Range("B6")
.WrapText = True
.Font.Size = 13
End With
With .Range("B11")
.HorizontalAlignment = xlCenter
.Font.Size = 21
.NumberFormatLocal = "\ #,##0"
End With
'帳票別設定
'請求書
If ActiveSheet.Name = "請求書" Then
.Range("D1") = "請 求 書"
.Range("E12") = Worksheets("電子印鑑の登録") _
.Range("B11")
.Range("E12").Font.Size = 9
.Range("E12").VerticalAlignment = xlTop
.Range("B8") = "下記の通り請求申し上げます。"
.Range("B8").Font.Size = 10
.Range("B9") = "税込合計金額"
.Range("B9").Font.Size = 10
.Range("B9").VerticalAlignment = xlBottom
If 操作パネル.CheckBox2 = True Then
Worksheets("電子印鑑の登録").Range("B13") _
.Copy Worksheets("請求書").Range("F5")
Worksheets("請求書").Range("F5").ClearFormats
End If
End If
'納品書
If ActiveSheet.Name = "納品書" Then
.Range("D1") = "納 品 書"
.Range("E12").VerticalAlignment = xlTop
.Range("B8") = "下記の通り納品申し上げます。"
.Range("B8").Font.Size = 10
.Range("B9") = "税込合計金額"
.Range("B9").Font.Size = 10
.Range("B9").VerticalAlignment = xlBottom
If 操作パネル.CheckBox2 = True Then
Worksheets("電子印鑑の登録").Range("B13") _
.Copy Worksheets("納品書").Range("F5")
Worksheets("納品書").Range("F5").ClearFormats
End If
End If
'見積書
If ActiveSheet.Name = "見積書" Then
.Range("D1") = "見 積 書"
.Range("E12").VerticalAlignment = xlTop
.Range("B8") = "下記の通り見積申し上げます。"
.Range("B8").Font.Size = 10
.Range("B9") = "税込合計金額"
.Range("B9").Font.Size = 10
.Range("B9").VerticalAlignment = xlBottom
If 操作パネル.CheckBox2 = True Then
Worksheets("電子印鑑の登録").Range("B13") _
.Copy Worksheets("見積書").Range("F5")
Worksheets("見積書").Range("F5").ClearFormats
End If
End If
End With
Next a
Worksheets("請求書").Select
If MRK = 1 Then
MsgBox "3点伝票テンプレートの作成が完了しました。", vbInformation, _
"見積書納品書請求書作成エクセル"
End If
End Sub
テンプレートの再作成の前に、シートそのものを全てリセットします。
書かれているデータは全て消去されます。
それぞれの行で行高さを規定します。
行高さを適当に変更してしまうと、1ページにはまる行数が変わってしまいます。
印刷ページ数と印刷結果がおかしくなるので注意してください。
それぞれの列で列幅を規定します。
無闇な変更の結果は、行高さ設定の場合と同じです。
データ入力のためのセル結合になります。
このデフォルトのテンプレートでは伝票1ページ分を作成します。
データを入力し帳票を正式作成するときは使用する行によって作成ページ数を変化させます。
その時は罫線の引き直しを行います。
13行目にデータの固定項目をセルに入力します。
4方向の余白はcm単位で設定しています。
「電子印鑑の登録」シートのデータから転記していきます。
フォントサイズをあらかじめ設定しています。
変更したい場合は、コードを直接変更してください。
「宛名の登録」シートのデータを表示するセルの、表示設定を行います。
変更するはこの場合も、コードを直接変更してください。
帳票の表題の表示、メッセージ項目、振込口座情報、社印押印などを設定しています。
テンプレートVBAコードの実行結果ビュー
VBAコードを実行するには、テンプレートを展開したいシート(請求書か納品書か見積書の何れかのシート)を開きます。
「横△マーク」sub/ユーザーフォームの実行のボタンをクリックします。
テンプレートコードの実行前
テンプレートコードの実行後
VBAコードでテンプレート作成のまとめ
これで、ベースとなるテンプレート作成部分は終了です。
それぞれのセルを整えて罫線を引く分には、ほとんどが簡単なコード組み立てで可能です。
電子印鑑押印の個所で、チェックボックスの状態の条件分岐処理がありますが、特に難しいコードでもないでしょう。
VBAコードについては、後で作成するユーザーフォームと連携させますので、
後に一部のコード追加と修正を行います。
次の記事を読むにはこちら↓になります。
VBAでデータ移動と計算を行う。ヒューマンエラーを減らす電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる
(著者)大村あつし(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)
学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。