ビジネスパーソンであれば、何かと使用する機会の多いExcel。
セル参照、式、罫線など、Excelにはビジネスに活用する表形式の資料を作成するために便利な機能がいろいろと盛り込まれていますね。
そのなかで、VBAという言葉を聞いたことがある方も多いのではないでしょうか?しかし、VBAって何?という方も多くいらっしゃいます。
この記事では、Excel VBAについて、できること、メリット・デメリット、活用事例を紹介します。この記事を読めば、VBAの概要と、何のために存在しているかが理解できるようになりますよ。
Excel VBAとは
そもそもExcel VBAとは何でしょうか?
Excel VBAとは、Visual Basic(VB)をExcel向けにカスタマイズしたプログラミング言語のことです。
VBAを使ってマクロを記述します。
VBAを知らなければマクロは作成できません。
Excel VBAを記述し、実行し、デバッグする環境をVisual Basic Editor(VBE)と言います。
VBAのコードは、Excelの表の中からボタンなどで呼び出すことができます。
他にも、シートが表示されたときに特定のVBAのコードを実行するようにしたり、ブックを開くときにブックの初期化処理をVBAで記述したりすることができます。
どんな大掛かりなExcelのシステムでも、VBAのコードを組み合わせて作られています。
マクロとVBAの関係
マクロとVBAは、混同して使っているサイトが多いようです。
しかし厳密にいうと、両者は違います。
マクロとは「VBAを使って作られるExcelの機能」で、VBAとは「マクロを記述する言語」です。
マクロを構成するのがVBAというわけです。
マクロ記録機能でマクロを作ると、実際にはVBAのコードがExcelによって生成されます。
ですので、マクロを作った人であれば、だれでもVBAのコードを生成していると言えるでしょう。
Evcel VBAを活用するメリット
そんなExcel VBAですが、当然メリットとデメリットがあります。主なものを挙げます。
メリット1・備わっているExcelの機能だけでは実現できない処理が実現可能
最大のメリットがこれです。
例えばボタンを押したら処理が走る、なんて機能にしても、VBAでボタンを押したときの処理のコードを書かなければ実現できません。
VBAはExcelを使うにあたり必須なのです。
メリット2・計算処理をまとめられる
大規模なExcelファイルになると、いろいろと凝った計算処理が出てきます。
こっちのセルを参照し、そっちのセルを参照し、二つの結果に処理を施し…などのような事例です。
Excelの式で書くのが厄介になってくる場合があります。というか、たいていそうです。
そんなとき、計算処理をVBAにすれば、複雑な計算も見やすく書けますし、後々メンテナンスもしやすいです。
メリット3・大規模なシステムが開発できる
VBAでできることは、Excelの機能にとどまりません。
Windowsのコアな部分の機能を使ったり、外部のテキストファイル(ログファイル、JSONファイル、HTMLファイルなど)やACCESSと連携することもできます。
これらを活用すれば、Excelが実用に耐える大規模システムの一部になるのです。
そのような大規模システムは、一般的にはエンジニアの手によって開発されます。しかし開発言語はVBAです。
メリット4・同一の処理を一つのコードで済ませられる
同じExcelファイルの中に、同一の処理が散在していることはよくあります。
そんなとき、VBAを使ってコードを記述し、VBAを呼び出すようにしておけば、処理の内容がコードの中に局所化されます。
これも、VBAのメリットの一つです。
Evcel VBAを活用するデメリット
次にデメリットを挙げます。
デメリット1・VBAを知っている人でないとメンテナンスできない
当然ながら、VBAを含むExcelファイルをメンテナンスするのにはVBAの知識が必要です。
ある程度体系化して覚える必要があります。
学習コストは比較的低いですが、ゼロではありません。
すると、作成者がいなくなると誰もそのExcelファイルをメンテナンスできない、なんてことが起こり得ます。
メンテナンスしなくてもいいITシステムは存在しないので、これは大きなデメリットです。
VBAを他の人も学習すればいいのですけどね。
デメリット2・表の仕様変更に弱い
筆者が最大のデメリットだと感じているのはこれです。
セル参照であれば、ある範囲のセルを削除したり、逆に挿入したりすると、参照先のセルが勝手に調整されます。
ところが、そのセルを使うVBAのコードには調整は一切かかりません。手作業で参照先を調整する必要があります。
ここの問題は仕方がない部分ではあるのですが、実際なんとかしてほしいところです。一つでも調整を忘れると、とたんにコード全体が正しく動作しません。
Excel VBAを用いた活用事例を紹介
ここからは、Excel VBAを用いた活用事例を紹介していきます。
活用事例1:勤怠管理システム
勤怠管理システムをVBAを用いて開発できます。
日付機能はExcelに付いています。時間を計算したり、集計したりする機能もExcelに付いています。後はそれに残業の処理などを追加するだけです。
VBAは補助的に使用します。
活用事例2:経理システム
実際に筆者が開発したシステムなのですが、800人を超える被雇用者がいる企業で、全員の毎月の給料を集計するシステムを作りました。
隠しシートを一つデータシートにして、そこに給料の明細項目と金額を書き込み、様々な角度から集計する機能を作りました。
VBAがなければ実現できなかった機能です。
活用事例3:統計システム
これも筆者が開発したシステムです。ゲーム内貨幣を使うゲームの結果をスクレイピングし、統計的に勝ち負けを算出し、ゲーム内貨幣が増える確率と減る確率を数学的統計的な計算を基に算出しました。
統計の計算は複雑なので、VBAがなければできませんでした。
活用事例4:ワークシート関数の拡張
VBAを使うと、ワークシート関数を新たに作成することができます。
作成したワークシート関数は、そのブックに保存しておけば、そのブックのどこからでも既存のワークシート関数と同じように使用することができます。
オリジナルの処理を関数にパックしておけば、セルに関数名を入れるだけでいいので表が見やすくなります。
まとめ
この記事ではExcel VBAについて、できること、メリット・デメリット、活用事例を紹介してきました。
覚えれば本当に便利でいろいろと使用用途があるVBAです。
VBAが専門でないエンジニアであっても、現場ではVBAを必要とされることも多く、知っているだけで重宝されます。
ぜひ積極的に活用してください。
執筆者プロフィール
名前:金さん
肩書き:ITエンジニア、ライター、コンサルタント
ITエンジニアとしてPythonを中心に手掛け、クライアントの問題解決に奔走。スクレイピングなら絶対の自信がある。Selenium、Djangoのエキスパート。ライターとしてはIT系記事を中心に、広範囲で記事を執筆。培った社会経験を活かし、コンサルタントとしても活躍。