WordVBAで請求書を作る

最終更新日

Comments: 0

ExcelVBAを使っている人は多いと思うのですが、WordVBAを使っている人は少ないと思います。そもそも自動化する作業が少ないからでしょうか。

以前にWordの文書ルタイルなどをマクロで管理できないかという仕事があったのですが、結局のところ実施されませんでした。そのとき買ったのが技術評論社『最速攻略 Word マクロ / VBA徹底入門 〔Word 2013/2010/2007対応版〕』です。

 

こちらの本にWordの表に関するサンプルがあるので、それを応用して請求書などの帳票を出力するマクロを作りたいと思います。

 

なぜWordなのか

今回はExcelで請求書のデータを管理しているとします。ほとんどの場合、請求書のシートを作って印刷すればよい話です。

しかし、Excelでの印刷ってあまり綺麗ではないのでどうも苦手です。特に次のようなことが・・・。

  • 長い文章が含まれる場合面倒→セル結合しまくる図形(テキストボックス)大量作成
  • セル内の文字切れが起こる→「縮小して全体を表示」で砂みたいになっている/数字が♯だらけ
  • そもそも文字の間隔がおかしいし、印刷イメージと実際の印刷の改行場所が違う

そんな問題を解決するため、Wordで様式を作成し、表の部分だけExcelからの数値を反映させます。それだけならWordの差し込み印刷を使うのも手ですが、以下のような問題があります。

  • Wordをコピーしても参照元のExcelは変わらない→気づかない可能性がある
  • 印刷だけで仕事が完了したと思い込む→「完了と差し込み」を行っておかないと、文字がしっかりと埋め込まれた(リンクが切れた)文章が保存されない
  • 参照元のExcelを移動したり、削除したりした→ネットワーク上で保存している場合、フォルダ名の変更が要因になることも

そこで今回はCSVファイルのデータからwordファイルの表を埋めるマクロを作りました。CSVならExcelから簡単に保存(またはVBAで自動化も)できますし、Accessなども応用できると思います。(Accessを使いこなしている人はそちらから帳票を出力していると思いますが。)

なお、CSVやExcelの取扱については以前にも紹介した技術評論社『[逆引き]Excel VBA パワーテクニック 525』を参考にしました。

 

 

作ってみた結果

まずは様式。マクロの練習なのでそれほどこだわっていません。お試しデータはこちらからどうぞ。なお、ファイルを開くダイアログについてはこちらを参考にさせていただきました。

使用に関しては以下の点について留意してください。

  • 素人が作っているので自己責任でお願いします。改造は歓迎です。
  • 既にWordの表に入力されている文字を消去するコードはありませんので、繰り返し利用する場合は手動で消去してください
  • 6行以上のCSVを読み込んだ場合、5行目までを読み込み、以降は読み込みません。

品名・数量・単価・金額がある4列のCSVを作成。(表が5行なので5行以内)

 

Wordファイルのマクロを動かします。ボタン等は設置していないため、マクロのリボンから実行してください。(開発タブが表示されていない場合は表示させてください。)

 

以下のように表のデータが埋まります。ご請求金額の欄はデータの合計が反映されます。

 

まとめ

本とネットの情報だけでこれだけできればいいかなと。宛先や日付、消費税の計算なども追加すると実用的かも知れません。

様式は若干違うのですが、私は実務でこれをつかっています。(取引先から提供されたExcelフォーマットがあまりにひどく文字切れしまくりだったので)

WordVBAを扱う本はとても少ないです。こちらの本については、最初の方は文章の文字を置き換えるなどといったマクロが多いのですが、後半の表や画像を扱うマクロは、使いこなせるようになればとても有用だと思います。

 

シェアする

コメントを残す

メールアドレスが公開されることはありません。

コメントする