道具としてのExcel活用

Excelに、社内システムのデータを自動取得する方法3選(+1)

社内システムをExcelで活用

社内システムは、業務処理データの宝庫

社内システムとは、イントラネットとも呼ばれ、日常の業務連絡・報告などに使う他、大抵の場合、前月の売り上げ実績など、報告で吸い上げたデータを集計した結果の「業務処理データ」がダウンロードできる機能などがあります。

当社がかかわった多くの事例において、何らかの業務を行うにあたって社内システムとデータの授受をしているケースがかなり多くありました。

たいていは、「手作業でダウンロードした○△□データを使って、今はExcelで手作業で加工しているが、自動化して欲しい」というニーズに繋がってきます。

つまり、間接的にExcel業務と社内システムは、繋がっているわけです。

 

社内システムと情報セキュリティの関係

社内システムには、多くの機密情報が含まれています。管轄する情報システム部門からすると、一般社員に気軽にアクセスされては「機密性」が確保できなくなくなるので、何らかの制限が設けられていることが多いのが実情です。

その裏返しとなりますが、報告・登録したデータが集計されたデータを、次の業務意思決定に活用するために「蓄積」しているわけなので、活用できる有益なデータが揃っていることが多いのです。

このため、人力でCSVデータをダウンロードする機能程度は多くの場合存在するのですが、他のプログラムから直接データを取り出すような行為に対しては、大量データが流出する懸念もあり、大抵は何らかの制約が設けらています。

しかし、このまま手作業で業務の自動化が進まなければ、人的ミスのリスクが残り、皮肉にも情報セキュリティ(完全性)が損なわれます。

そこで、多くの企業では、こうした状況に対して折り合いが付けられるよう、「情報セキュリティポリシー」というガイドラインを設けています。セキュリティポリシーに従った運用であれば、機密性を損なわずに完全性を高めることが可能になります。

今回は、セキュリティポリシーの内容に応じて、Excelに社内システムのデータを取り入れる方法を解説します。

 

社内システムからExcelで、直接データを取り出す方法3選

社内システムのデータを手入力するのではなく、Excel側に自動取得できれば、高速かつ正確性も飛躍的に向上します。

社内システムは、パッケージものを購入してカスタマイズするものと、0から作成するものとがあります。大きな企業では、SAPなどのERPを導入して、独自のカスタマイズをして使っており、中堅規模の企業でもパッケージソフトにカスタマイズをしているケースを多くみかけます。いずれのケースでも、データの取り扱いにはデータベースを活用しており、接続方法さえわかれば、他の処理系(≒ExcelVBAを含むプログラム言語)とデータの授受が可能です。

0から作るケースでも、開発コストや運用の手間を考えると、大抵はデータベースを活用しているので、技術的にはExcelから直接データを操作(読み取り/書き込み)することは可能です。

とはいえ、前述の通り、「何らかの制約」があることが多く、他の方法も併せてデータの自動授受(取得・登録)方法を探ることになります。

1.データベースの読み取り権限だけ貰う

データベースに接続する場合、他のシステム同様「アクセス権限」が必要になります。どんな処理系でも「全権限」「読み書きできる権限」「読み取りのみ権限」があります。情報システム部門としては、「全権限」を他者(それがプログラムであっても)に委ねることで、データの「完全性」「機密性」が担保されなくなる懸念から非常に抵抗があり、このため「DBへの直接接続はNG」という見解になりがちです。しかし、現場のニーズとしては「読み取りのみ権限」があれば十分なケースが多いのです。

例えば、Excelのシート上に前月の売上を商品グループ単位で表示させたいといったニーズがあったとして、DBに書き込みに行く必要は全くなく、当該部署に関係のあるデータ範囲に限って読み取り(閲覧)、その後Excelの機能で集計できればよいのです。

こうした説得のような交渉がうまくいけば、Excelの「外部データの取り込み」機能を活用したり、SQL(データベース操作言語)を使ってデータを加工することができるようになります(view:Accessでいうところのクエリ・・・を活用します)。

コスト的にも、処理速度的にも、一番有利な方法です。

2.システム側が用意したAPIを使う

大抵のシステムでは、各種データを直接授受ができる口(I/Fと書いて、インターフェースと呼びます)を設けており、APIと呼ばれています。身近な例としては、Amazonにおいて、自分で作ったプログラムなどから書籍のISBN情報を基に、書名や価格などを取り出すことができるAPIが提供されています。

社内システムのAPIの一部を開放してもらえれば、プログラムからAPIを通して「こんな条件で、データを下さい」的な手続きをすることで、直接Excelのシート上にデータベースの内容を取得できます。

この場合、APIは開発側の意思で作られたものなので、どのような手順で授受すればよいかは、社内システムの開発側にしか分かりません。開発側(多くは情報システム部門が絡んでいます)がAPIの仕様を公開してくれれば、ExcelのVBA(マクロ)から呼び出してデータ取得が可能となります。

開発期間が長くなりがちのため、コスト的には少々負担が増えますが、データベースの構造や場所などを公開する必要がないことから、情報セキュリティ(機密性)を維持しつつ利便性を高める方法として、近年採用が増えています。

 

3.利用者向けの画面から、CSVをダウンロードする

多くの場合、社内システムからは、登録されたデータをcsv形式のファイルとしてダウンロードする機能があります。なくても、データベースからデータをダウンロードするだけの機能であれば、慣れれば比較的容易にスクリプト化できます。

どのデータをダウンロードできるようにするかは、制作側の人にしかわかりませんが、メニューを見れば当たりがつくはずです。

このcsvデータをExcelのシートに読み込むことで、少なくとも手入力よりも遙かに短時間で、間違いの無いデータを確保できるようになります。

4.Excelをブラウザ代わりに自動制御

ところで、社内システムはブラウザを使って利用します。

Excelもマクロを使えばブラウザを直接操作することができるので、人が操作しているのと同じ操作を、ExcelのVBAから実行すれば、「メニューからxxxを選択し、年月と△△△を選択して☆☆☆のボタンを押せば、データファイルがダウンロードされる」といった操作を、Excel側から操作できます。

社内システムのhtml構造の複雑さによっては分析に時間がかかるのと、ブラウザのバージョンが上がると設定ファイルを入れ替える必要があるなど、コスト・運用ともに敷居が高いのですが、情報システム部門からあらゆる接続をお断りされても、この方法なら断る理由がなく、拒絶されることは無いでしょう。

 

5.全て断られた場合

ちょうど先日、某社の情報システム部門から「利用者側のコンピュータでは、あらゆるプログラムを動かしてはいけない」として、VBA(マクロ)で動くプログラムの受入れをお断りされた事がありました。理由を聞いたら「セキュリティ上の理由のため、回答できません」とのこと。元々手作業で当該作業を行っていることから、情報漏洩リスクが増加する懸念はなく、寧ろ人的ミスが起こりえる状態が放置されているわけですから、情報セキュリティの3要素の1つ「完全性」が損なわれており、「セキュリティを維持させないことが目的」になっています。情報セキュリティ向上のためにも、属人的要素を減らすべきと説得に努めましたが、規則を盾になかなか話が進みません。

ここまで自動化を拒絶するケースは少ないのですが、そんな場合は情報システム部門に「データをダウンロードするしくみを作って下さい」とお願いするのも手です。「忙しい」と断られることも予想されますが、元々データベース管理機能にある機能を活用するだけなので、実はそれほど難しい内容ではありません。主要データのみダウンロードする機能に絞った上で、年度予算編成で取り上げて貰えるタイミングで交渉すれば、「利用者に勝手にいじられては困る」という「お断りの理由」がなくなる分、成功確率が高くなります(あくまで過去の経験ですが)。

こうした運用を「データウェアハウス」とも言いますが、定期的に最新データが入手できるようになれば、そこから先は仮に手作業としても、転記ミスは原理的に0になりますし、将来マクロで自動化する路が見えてきます。

なお、先の「プログラムお断り」の企業では、説得が効いたのか別の押しが効いたのかわかりませんが、その後受け入れて戴けることになりました。規則を作ったのは人ですから、絶対に変えられないものではないという教訓でした。

 

6.複雑な接続から、接続交渉の代行まで

社内システムのデータを受け取るだけなら難しくありませんが、Excel側で一定の加工後、社内システムにその結果を返すような動きをする場合、どのタイミングで行うか、ミスがないことを担保できるか、何かあったときにリカバリできるか、といった点が重要になってきます。

そんな時は、情報システム構築のプロである、当社にご相談ください。匿名でも歓迎です。

 

関連情報:究極の情報セキュリティとは?