ExcelVBA

【ExcelVBA】店舗別の請求書データを収集するマクロを作成する

投稿日:

こんにちわ。ノンプロ研所属のみんこ(@minkolog)です。
ノンプロ研Advent Calender 2018の16日目を担当します。

本日は、ExeclVBAで店舗別の請求書データを収集するマクロの作成方法をご紹介いたします。

店舗数が多い企業さんだと今回の請求書データ収集に限らず、必要な情報を収集する業務が少なからずあるかと思います。
それをすべてエクセルでコピペしていくのは、非常に時間がかかります。
何かいい方法はないかと調べたらことろ行きついた先はノンプロ研のタカハシさんのサイトでした。

こちらのサイトをがっつり参考にしながら作っていきました。

ひな形と収集ファイルの準備

以下のような請求書情報を記入するひな形と収集用のファイルを用意しフォルダに格納します。
フォルダに格納された店舗別の請求書情報を収集用ファイルに集めていきます。

・ひな形

・収集用のファイル

・フォルダ

請求書データを収集するコード

こちらが請求書データを収集するプログラムコードです。

ポイント

FileSystemObjectでファイル情報を一括取得

FileSystemObjectはドライブ、フォルダ、ファイル等の操作をしたり、情報の取得や変更ができるオブジェクトです。
使用するには、CreateObject関数を使用して直接記述する方法がありますが、今回はVBEのツールの参照設定の「Microsoft Scripting Runtime」という項目にチェックを入れて使用していきました。

Newステートメントでオブジェクトを生成してオブジェクト変数にセットして使用します。

FileSystemObjectは、とて便利なオブジェクトなので別記事でがっつりご紹介したいと思います。

Select caseでエクセルファイルのみに収集の実行をかける

エクセル以外にもPDFの資料をあわせて提出することがあるので、GetExtensionNameメソッドでファイルの拡張子を取得し、select caseでエクセルファイルのみに処理を実行するようにしました。

運用時に発生した問題点

実際に運用をしてみるといろいろと問題が出てきました。
・提出期限を守ってもらえず店舗とのメールや電話のやり取りが何回も発生する。
・入力誤り、行を空けて入力等で収集時にエラーが発生する。
何カ月間か運用していくと入力誤りも減り安定してきましたが、なるべく最初から防げるものは防ぎたいものです。提出状況の確認や催促メール等の自動化、入力規則等での入力誤りの防止等でさらに精度を上げていきたいと思います。

最後に

今回は、ExeclVBAで店舗別の請求書データを収集するマクロの作成方法をご紹介しました。今後は、もう少し噛み砕いてポイントを部分的にご紹介できればと思います。

最近、LinkedInラーニングでタカハシさんの 「Excel VBA:プロシージャ・モジュール・クラス」の勉強をしております。
クラスについては、まだ習得できたとは言い難いですが、勉強をしているとオブジェクト、プロパティ、メゾットに対する理解が深まっていることが実感できました。
入会して始めの1カ月は無料ですのでお正月休みにまとめて勉強してみるのもいいかと思います。オススメです。

更新頻度が少し空いてしまいましたが、アウトプット作業をもっと頑張っていこうと思います。
それではまたお会いしましょう!

-ExcelVBA

Copyright© プログラみんこ , 2019 All Rights Reserved Powered by STINGER.