Excelを本当にご存知ですか?
多くの仕事で活用されているデスクワーク定番アプリのMicrosoft社の「Excel」。ビジネスアプリケーションとしてその知名度は非常に高いと思います。また、ネット上でもその操作方法や活用術といった情報を記載したコンテンツが充満しています。Googleで「excel vlookup 使い方」と検索するだけで15万件のページがヒットします。それだけ重要が高いということですね。
また、開発現場において、Excelは本来の表計算として活用するよりドキュメント作成に使われることが多いのも事実です。
- 理由1:Wordより手っ取り早い
ドキュメント作成の定番は同社の「Word」なのですが、不慣れな方にとってははるかにExcelの方が扱いやすいです。特に、行間、段落を考慮したインデントや箇条書き、改ページなど、Wordの場合はマニュアルを読んで覚える必要があるのに対し、Excelはセル幅を調整し、特定のセルに文字を入力するだけで直感的に同じようなドキュメントが簡単にできてしまうからです。会議資料など、細かなレイアウト調整や印刷状態の美しさをあまり重視しない資料においてはExcelで十分ということですね。 - 理由2:表の挿入が非常に楽
これは本来表計算ソフトであるため当然ですね。WordでもExcelワークシートとしての表を挿入することが出来ますが、挿入位置の調整など面倒なことが多いです。 - 理由3:複数のシートで構成することができる
同じテーマで複数種類のドキュメントを管理・作成したいとき、Wordの場合は複数のファイルを作成する必要があります。それに対し、Excelは一つのブックに複数のシートを設置することができるため、一つのファイルで管理することが可能です。 - 理由4:印刷状態(レイアウト)の設定が楽
Wordで印刷ドキュメントを作成する場合、最初にフォントサイズや用紙サイズ、余白を決定してから行います。それに対し、Excelは直感的に作成したドキュメントを「ページ設定」により拡大/縮小することで、指定の用紙にあった倍率で印刷することができます。
簡単ですが、以上が世の中の一般的なExcelの使われ方です。ここから徐々に本題に近づけたいと思います。
Excelマクロって何?
みなさんは「Excelマクロ」というのはご存知でしょうか。
上記のとおり、ExcelマクロとはVBAという言語で作成したプログラムのことです。そしてマクロを使用する大きな目的は、「本来は手作業で行うべきExcelの操作を、ユーザーに代わって自動で実行してもらうことで作業の効率化を図る」ことです。例えば、見積もりデータを並べ替えて金額を集計し、それをグラフ化して印刷するみたいな作業を、ボタンをクリックするだけで実行してしまうことが可能になります。
Excelマクロに関する書籍やWeb上の記事を読むと大体このような説明から始まり、次に「マクロの記録」でマクロが簡単にできてしまうことを紹介しています。日々Excelを使ったお仕事をされている方はこの程度までの知識はあると思いますし、実際にVBAでマクロを開発されている方もいらっしゃると思います。ただし、VBAで「本格的なExcelアプリケーションを開発する」ことまで行っている方はは少ないはずです。それはExcelの機能の限界を勝手に決めつけて、あくまでもサブあるいは末端の業務アプリとして使用するものだという風潮や先入観があるためだと思います。
例えば、メイン部分を○○で開発し、集計表やグラフの出力をExcelで行うといったシステムをよく見かけます。「そのメインの部分はExcelでは無理なの?」という疑問を持たずして不可能と決めつけ、わざわざ複数のプラットフォームで開発している例が少なくありません。Excelを本当に知っている人に相談をすると「全てExcelで開発できますよ!」という回答を得られる可能性が高いはずです。ただし問題なのは、Excelを本当に知っている人が非常に少ないことですね・・・。
ExcelのMac版は以前からありましたが、Windows上で開発したExcelマクロをMac上のExcelで実行することは困難でした。それは互換性が非常に低かったためです。ところが最近の「Excel 2016 for Mac」に至っては、ほとんど問題なく動くようになっています。Macでも共通して使用できることによりさらに可能性が広がりますね。
Excel VBAで開発できるアプリの例
ここでExcelの潜在能力を知っていただくために、開発可能なアプリの例を挙げてみます。
タクシー運転手の業務報告書作成アプリ
2010年くらいでしょうか。タクシー運転手を務める友人から次のような相談を受けました。タクシー運転手は客が乗車した場所と降ろした場所、金額を手書きで帳簿に記している。これをスマホなどの携帯端末から簡単に入力して管理できるアプリを作るのは難しいものなのか・・・と。金額は手入力するとして、現在地の住所はExcelで取得可能です。手順は以下のようになるでしょうか。
- Googleマップなどの地図アプリと連携し、現在地の緯度/経度を取得する。
- (1)で取得した緯度/経度を住所に変換する。
- 取得した住所を所定のセルに入力する。
乗車ボタン、降車ボタンを作成のうえ、上記のプログラムをボタンで実行するような仕様にし、あとは金額を直接入力すれば乗客一人分の報告データが完成します。これを一覧表にするのも自動化すれば、報告書としてのドキュメントにもなります。スマートフォンなどWindowsOS以外の端末で色々考慮が必要になりますが、例としてこのようなことも可能ということです。
為替情報の自動取得・分析アプリ
時々Yahoo!知恵袋の質問コーナーを覗いてみたりします。そして、「Excelマクロ」について世の人たちはどのような質問をしているのかを調査し、興味のある質問には回答をしたりもしています。自分もお世話になることがあるので、たまに恩返しのつもりで。中で、私が回答した質問で、非常に興味深かったものがあるので紹介します。
質問者はVBAの素人で、誰かから譲り受けた「株を管理・分析する」Excelマクロを修正したいという内容で、コードを解析してみたところ以下のような仕様でした。
- タイマーにより、特定の時刻になるとプログラムを実行する。
- まずは、「Internet Explorer」を起動する。
- 為替情報を取得するサイトにアクセスする(ログインまでしていたような)。
- ページ内に表示される為替レートを1分おきに取得し、Excelシートに記憶する。
- 円安、円高を分析し、Excel上からブラウザのボタンをクリックして買い注文をする。
私は業務的なシステムしか開発をしたことがなかったので、このシステムの発想自体に感心しました。タイマーで自動実行したり、特定のサイトにアクセスして情報を取得したり、さらにはページ内のボタンクリックまでしてしまうとは・・・。私は株や為替には無頓着な方なのでよく分かりませんが、お金が動くことをこのように自動化することに恐怖はないものかと不思議にも思いましたね。
Excelマクロの長短所
これまで述べてきたとおり、Excelは一般的に知られている以上にポテンシャルの高い開発ツールですが、当然ながら得手不得手はあります。ということで、Excelはどのようなシステムに向いているのかを判断するために長短所を挙げてみましょう。
Excelマクロの長所
- オールインワンシステムを構築できる
集計表やグラフの出力はもちろんのこと、帳票出力(印刷)、データベース機能、外部データのインポートなど、あらゆる機能を一つのファイルに装備できます。ファイルが一つであるため、バックアップ作業もファイルをコピー保存するだけで済みます。 - インストールをする必要がない
通常のアプリケーションソフトは、それを使用するためにインストールという作業が必要ですが、端末にExcelが入ってさえすれば稼働します。インストールという行為を嫌う方や、社内ルールでアプリのインストールを禁じられている環境にいる方にとっては便利ですね。 - 開発言語がやさしい
VBA(Visual Basic for Applications)は、システム開発初心者にとっても非常に取っつきやすく、易しい言語です。さらには「マクロの記録」という機能を使えば、実装したい動作を自動的にプログラムとして書き出してくれます。 - 実現したい機能に対し手法がいくつもあることで、知識が少ない状態のままでもある程度の開発ができてしまうため
- 多少間違えたコード(※)を書いてもエラーにならない(通ってしまう)ため
※ 補足をすると、VBAは多くの省略形が許されているため、きっちり正確に記述しなくても通るということです。 - メジャーゆえに情報が豊富
ネット上にはExcelマクロ、VBA関連の情報があふれています。初級者向けのものから上級のものと、ありとあらゆるコンテンツが存在します。よって、開発に行き詰まったり問題が起きた場合でも、ネット上のあふれた情報から即座に解決に導くことができます。作業がスムーズかつ効率的であれば工数をおさえることができるため、より低額での提供が可能ということにもなります。
Excelマクロの短所
- 大量データを扱うのには向かない
パソコンなどハードウェア性能が年々向上しているため、「大量データ」の定義も変わっています。2000年頃の一般的なパソコンでは、数千件程度のデータがあるシートでフィルタリングしたり数式を書いただけでフリーズしてしまいました。それが2018年現在では、数万件程度であればサクサク処理ができるまでハードウェアの性能が上がっています。Excelシートので扱える行列数も、Excel2000では65,536行×256列だったのが、Excel2007から1,048,576行×16,384列と、行数で16倍、列数で64倍に拡張されています。
Excelマクロでアプリケーションを開発する場合、通常はシートをデータベースとして使用します。よって、データ件数がシートで扱える行数(1,048,576行)を超えてはならないので、この数値が一つの目安となります。あとはパソコンの性能によりけりで、どのくらいのデータ量だとユーザーにストレスを感じさせない処理ができるかですね。
また、Excelファイルのサイズは、ほぼシートのデータ量に比例します。一つのファイルにデータベースも含んでいることから、あまりに大量のデータを記憶するとファイルサイスが増大するため、それが原因でパフォーマンスが劣化するのも弱点ですね。 - WindowsUpdateにより急に不具合が起こることが稀にある
「office 365」が普及し始めた昨今は少なくなりましたが、Excel2010、Excel2013の時代は年に2、3回はこのようなことが起きていました。「昨日まで問題なく動いていたのに今日になって急にエラーメッセージが表示され動かなくなった」という問い合わせがくるのです。そういった場合は、ほぼWindowsUpdate(自動更新)によって不具合の要因となるプログラムがインストールされたことが原因です。
パソコンを更新前の状態に戻せば正常な状態に戻りますが、Excelマクロで重要な業務を行っているのであれば、念のためWindowsUpdateを手動更新に設定しておき、業務に支障のないタイミングを見計らって更新を行うのがよいでしょう。