顧客に出す伝票のテンプレートをエクセルVBAコードだけで作る

santenden_tempeyecatch

エクセルVBAのコードで帳票のテンプレートを作ります。シートのセルは一切触りません。

万一ミスしてテンプレートを破壊してしまっても、このテンンプレートVBAなら何度も一瞬にして回復させることが出来ます。

 

これからスタートするテーマです。販売に関しての伝票(見積書、納品書、請求書)を、自動で作成するソフトをエクセルVBAベースで作成していきます。

今回は第1回目として、そこに利用する伝票のテンプレートを、エクセルのシートに作成していきます。

こんにちは、じゅんぱ店長(@junpa33)です。

 

伝票をエクセルで作って印刷出力するのに、一番大事なのがテンプレートですので、

ここはしっかり、でも、サクッと作ってしまいましょう。

 

見積書・納品書・請求書作成に関する記事はこちらです。

「見積書納品書請求書作成」の記事一覧を開く

 

エクセルで顧客に出す伝票を作っていますか

 

エクセルを会社業務で使っている人は多いでしょう。

”社内会議や部署内資料用のデータ整理用のためのもの” を主に作っているという方も多くおられるでしょう。

その中でも結構おられるのが、社内文書は得意だけれど、外に出す文書と帳票はあまり自信が無い。というタイプの人。

 

数字や金額を集計をして、様式を整えてと、間違いの許されない請求系の文書と帳票。

トラブルがあれば、「誰が作った?」と一番に名前が上げられますし、だから出来たら、他の人にお任せしたい的な感じでしょうか?

 

けれど自分は、さらにエクセルのスキルをアップさせたいと目指しているなら、社外に出す帳票類を「きれいに効率よく作ること」に挑戦してみましょう。

業務の中では既に、エクセルで対外的な通達書・通知書などを作成しているという方もいるでしょうが、それはあくまでもエクセルを使った文章でしかありません。

チャレンジ

この記事をきっかけに、エクセルの機能を活かしながら、社外に提示する帳票作成の一連の仕組み(エクセルVBAソフト)を作ってみましょう。

チャレンジがスキルアップにつながります!

じゅんぱ店長

 

たとえば、こんな環境の人

 

商品販売の中でも基本の伝票に「見積書」・「納品書」・「請求書」があります。

 

販売管理ソフトを使っている会社なら、この顧客に出す3つの伝票は専用用紙に印刷で簡単に作れます。

 

けれどもその中でも、顧客(官公庁など)によっては、伝票様式を3つ同じにしなければいけない場合もあります。

 

また今現在も、昭和の伝票的な、全て手書きで伝票を作っているなんて会社や部署もあるかもしれません。

 

もしそのようなシチュエーションの中にあなたがいたなら、もうこれは逆に大ラッキーです。まさにチャレンジ環境です。

 

エクセルVBAコードだけで作るテンプレート

 

エクセルで「伝票を自動作成するソフト」を作っていきますが、今回の作業の部分は、伝票のテンプレートづくりとなります。

  • 見積書テンプレート
  • 納品書テンプレート
  • 請求書テンプレート
  • 作業シート
  • 宛名の登録シート
  • 電子印鑑の登録シート

この6つの項目をエクセルのシートに作成します。

テンプレートは誤って形式を崩したり削除したりしてしまうと後が大変ですので、

テンプレートをVBAコード化して最終的にはボタンワンクリックで復元できるようにします。

 

実際にエクセルシートで作成します

 

さあ、始めていきます。まずは、こちらからです。

1.エクセルBOOKの準備、シートのリネーム

 

Microsoft Office のExcelをダブルクリックして起動してください。

「空白のブック」を選択して開きます。

(ここでMicrosoft Office自体がパソコンに導入されていない場合はこちらからスタートしてください。)

 

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ピクセル 備考

とタイプしてください。列幅は適当ですが、「品名」は広げておきましょう。

3tendensakusi001

 

宛名の登録シート

次に、宛名の登録シートに項目欄を作ります。

シートの1行目に

A列   72ピクセル NO.
B列     72ピクセル 顧客番号
C列  590ピクセル 宛名
D列   72ピクセル 郵便番号
E列  250ピクセル 住所

と打ち込んでください。列幅は適当ですが、「宛名」と「住所」は広げておきましょう。

3tendensakusi002

 

電子印鑑の登録シート

電子印鑑の登録シートに登録欄を作成します。

セル位置を間違わないように画像のようにセットしてください。肝心の電子印鑑ですが、

電子印鑑の準備をするには、

無料で使える電子印鑑。使える書類は何? フリーの印鑑ソフトでオススメ7選 が参考になります。

電子印鑑を、今使っている角印から作るには、

無料で自作。リアル印鑑をデジタル化してワード・エクセルで使う が参考になります。

 

データ入力欄はB列です。

3tendensakusi003

 

3.見積納品請求3点伝票のテンプレートVBAの組み立て

 

VBAコードを使ってテンプレートを作ります。

表題が違うだけで、見積書、納品書、請求書とも様式が同じですので、共通のテンプレートとして作成します。

それぞれシートをアクティブ(開いて)にしてコードを実行します。

どこにコードを記述するかは、VBE(ビジュアルベーシックエディター)を起動するで確認できます。

(標準モジュールでModule1に記述しましょう。)

関連記事

エクセルVBA 始めての起動。VBEの立ち上げ、保存と終了

 

MEMO

With~End Withの使い方については、この記事を参考にしてください。

With~End Withの使い方。VBAコードを簡潔に記述する

 

シート上でセルサイズを変更したり文字を入力したりということはありません。

このコードが保存されている限り、何度でもテンプレートの複製が可能になります。

Sub テンプレ作成2()

ActiveSheet.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

 

‘項目の入力
    .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
      Worksheets(“電子印鑑の登録”).Range(“B13”).Copy Worksheets(“請求書”).Range(“F5”)
      Worksheets(“請求書”).Range(“F5”).ClearFormats
    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
      Worksheets(“電子印鑑の登録”).Range(“B13”).Copy Worksheets(“納品書”).Range(“F5”)
      Worksheets(“納品書”).Range(“F5”).ClearFormats

    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
      Worksheets(“電子印鑑の登録”).Range(“B13”).Copy Worksheets(“見積書”).Range(“F5”)
      Worksheets(“見積書”).Range(“F5”).ClearFormats
    End If

  End With

 

End Sub

一旦初期化

テンプレートの再作成の前に、シートそのものを全てリセットします。

残っているデータは全て消去されてしまいます。

 

行高さ設定

それぞれの行で行高さを規定します。

行高さを適当に変更してしまうと、1ページにはまる行数が変わってしまいます。

印刷ページ数と印刷結果がおかしくなるので注意してください。

 

列幅の設定

それぞれの列で列幅を規定します。

無闇な変更の結果は、行高さ設定の場合と同じです。

 

セルの結合

データ入力のためのセル結合になります。

 

罫線の設定

このデフォルトのテンプレートでは伝票1ページ分を作成します。

データを入力し帳票を正式作成するときは使用する行によって作成ページ数を変化させます。

その時は罫線の引き直しを行います。

 

項目の入力

13行目にデータの固定項目をセルに入力します。

 

印刷余白の設定

4方向の余白はcm単位で設定しています。

 

自社の表示設定

「電子印鑑の登録」シートのデータから転記していきます。

フォントサイズをあらかじめ設定しています。

変更したい場合は、コードを直接変更してください。

 

相手先文字ほか表示

「宛名の登録」シートのデータを表示するセルの、表示設定を行います。

変更するはこの場合も、コードを直接変更してください。

 

帳票別設定

帳票の表題の表示、メッセージ項目、振込口座情報、社印押印などを設定しています。

 

テンプレートVBAコードの実行結果ビュー

 

VBAコードを実行するには、テンプレートを展開したいシート(請求書か納品書か見積書の何れかのシート)を開きます。

3tendensakusi006

「横△マーク」sub/ユーザーフォームの実行のボタンをクリックします。

 

テンプレートコードの実行前 テンプレートコードの実行後
3tendensakusi004 3tendensakusi005

 

テンプレートコード作成のまとめ

 

これで、ベースとなる部分は終了です。

どうでしたでしょうか。

それぞれのセルを整えて罫線を引く分には、そんなに大変なコード組み立てでもなかったと思います。

それぞれの帳票での表示項目の違いで、その所のコードが少し膨らんでしまいましたが、

言ってもそんなに大変でもなかったと思います。

 

VBAコードについては、後で作成するユーザーフォームと連携させますので、

後に一部のコード追加と修正を行います。

 

スタートしたばかりで、まだこれから何回かに渡りますので、しばらく頑張っていきましょう。

次の記事を読むにはこちら↓になります。

データ移動と計算のVBAコード。数行のコード記述で簡潔にできる

 

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAを独学で習得するためのポイントは?良書との出会いは重要

 

エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできると思います。
エクセルVBA初級者がUdemyで動画学習する講座おすすめ5選と無料講座の上手な使い方。

 

大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方
初めてのVBAの勉強、構えなくても気軽に始められる。
vbastudy020a
vbastudy021a

電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる

(著者)大村あつし
(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)

学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。

 

エクセルVBAを使って業務効率を上げて行くのに、始めのうちに知っておくといい内容を纏めてみました。

「VBA最速理解」の記事一覧を開く

 

今回の記事はここまでです。   最後までご覧いただき有難うございました。

 

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません