VBAとマクロとの違いとは?マクロの使い方、VBAの活用事例まで徹底解説!

ExcelやWord、PowerPointなど、その他のOffice製品も、ビジネスの強い味方ですよね。 IT化・DX化が進んでいない企業であっても、多くの企業がこれらのOffice製品をビジネスに活用しているのではないでしょうか。 しかし、いくら便利なアプリケーションとは言え、長く業務に携わっていると、定型的な作業を何度も繰り返してこなさなければならない場面では、 「この作業、何のためにやっているんだろ」 と、操作に煩わしさを感じる時もあるかと思います。 そこで、Excelを用いた業務の効率化する方法として「マクロ」という言葉を聞いたことがあるのではないでしょうか。 また「VBA」という用語も似たような場面で聞いたことがあるかと思います。 ここでは両者の違い、そしてマクロの使い方やVBAの活用事例をご紹介します。

マクロとVBAの違い

マクロとVBAの違い

マクロとVBAの違い ここではまず、マクロとVBAの違いをご紹介します。 結論からお話すると 「マクロを記述するためのプログラミング言語がVBA」 となります。

マクロとは

マクロとは一般に、アプリケーションソフトにおいて 「複数の手順や処理、命令をあらかじめ記録しておき、必要に応じて呼び出す機能」 を指します。 録画した映像を繰り返し再生することができるように、マクロを呼び出せば、記録された一連の操作を自動で行ってくれる非常に便利な機能です。 多くの企業では、「定型業務」というものがあります。 例えば、 1.社内のシステムから特定の売上データなどを拾い上る 2.エクセルに転機する 3.ピボットテーブルで集計する 4.特定のフォルダに報告資料として提出する などのような業務がある企業も多いのではないでしょうか。 マクロを活用すれば、こういった複数の処理を自動で行ってくれるため、業務の効率化を図ることができます。 マクロという言葉自体は、エクセルに限定される単語ではありませんが、一般的にはエクセルにおけるマクロ機能の事を指します。

VBAとは

VBAとは、「Visual Basic for Applications」の略称で、Microsoft社が提供しているプログラミング言語です。 ExcelやWord、PowerPointなど、MicrosoftOfficeの各アプリケーションの機能を拡張したり、カスタマイズすることができる言語です。 プログラミング言語としては比較的分かりやすく、Office製品を簡単に扱うことが出来ます。 例えば、エクセルに入力されている行を順に集計する・・・などの操作は10行程度のプログラムで実現可能です。 また、特別な開発環境が必要なく、Officeのアプリさえあればプログラミングの実践できるため、学習のハードルが低いとも言われています。 とは言うものの、しっかりと学習していけば高度な処理も実現可能であるため、初心者から中上級者まで利用できる奥の深い言語です。 つまり、VBAはプログラミング言語の一種で、ExcelのマクロはそのVBAを使って記述される自動化処理、ということになります。

マクロの使い方

マクロの使い方

マクロの使い方 Excelでマクロを利用するには、どのような手順を経ればよいのでしょうか。 基本的な手順は、以下のとおりです。 1.「開発」タブの表示 2.マクロの記録 3.マクロの呼び出し

1.「開発」タブの表示

マクロは、Excelの「開発」タブから利用することができますが、デフォルトではこのタブは表示されていません。 そのため、「リボンのユーザー設定」からメインタブ「開発」にチェックを入れることで、「開発」タブを表示します。

amela.co.jp news image 3
amela.co.jp news image 4

これで次回以降も、常に「開発」タブが表示されるようになります。

2.マクロの記録

例として、セルに入力された文字の色を変更するマクロを作ることにしましょう。 まず、A1のセルに文字を入力し、上部のタブの中から「開発」タブを選択します。 amela.co.jp news image 5

セルA1を選択した状態で「開発」タブの「マクロの記録」を押下し、記録するマクロの名前や保存先などを設定します。 amela.co.jp news image 6

ここでは、「文字色変更マクロ赤」と名前をつけておきます。 それらの設定が完了したら、先ほどのセルの文字色を変更し、「記録終了」を押下します。 amela.co.jp news image 7

これで、「セルに入力された文字の色を変更する」という操作を記録したことになります。

3.マクロの呼び出し

セルA3に文字を入力し、「開発」タブから「マクロ」ボタンを押下します。

amela.co.jp news image 8

先ほど設定したマクロを選び実行すれば、文字色が変更されます。

amela.co.jp news image 9

これで記録したマクロが実行されたことになりますね。 ここでは例として一つの手順のみを記録、実行しましたが、もちろん複数の処理を記録することができるため、使い方次第で非常に便利なものになります。 活用事例は後述しますが、特に 「作業自体は簡単なものだけれど、作業工程が多い」 というケースではこのマクロが非常に有効です。

VBAでできることと活用事例

VBAでできることと活用事例

VBAでできることと活用事例 それでは、VBAについてより詳しく解説していきます。 VBAではどんなことができるのか、そしてVBAを活用した業務効率の事例についてご紹介します。

レポート作成の自動化

Excelでまとめられたデータやグラフを使って帳票や報告書、見積書などを作成する場合がありますよね。 作成に用いるデータや手順、テンプレートなどが定まっていれば、作業難易度は低いかもしれませんが、時にそうしたレポートは膨大な量になります。 大企業ほど、 ・チェーン別 ・商品別 ・部門別 ・地域別 ・担当営業マン別 など、同じデータでも様々な分類方法でデータを集計/報告する必要があったりします。 実際、私の知人の会社では毎週1回のレポート作成作業に、1営業マンあたり2時間程度の時間をかけています。 社内システムからデータを抽出してエクセルに貼り付け、更に集計を行う。 このタイミングで全国の営業マンが同時に社内システムにアクセスをし、大量のデータをダウンロードします。 そのため、アクセスが遅くなったり、データのダウンロードに時間がかかるなど、時間のロスも多かったのです。 VBAを用いれば、そうしたレポートの作成を自動化し、PDFでの出力などが可能です。 また、Excelだけでなく、WordやPowerPoint等で作成された資料を取り込んでレポート出力を行うことも可能です。

Office製品を連携した作業の自動化

VBAはExcelだけに限定されず、Officeの各アプリで使うことができる言語です。 実際の業務の中では、Excel上のデータを見ながらWordで文書を作成したり、PowerPointでプレゼンを用意したりと、複数のOffice製品を並行して使う機会が多いと思います。 VBAを使えば、WordにExcelの表を取り込んだり、Excel上でPowerPointのスライドを再生する、といったことが可能です。 事務作業で複数使われるのが当たり前になりつつあるOfficeですが、それらに共通した言語であるVBAは、まさに連携に際して真価を発揮すると言えるでしょう。 特にテレワークなどが進んで、MicrosoftTeamsなどのチャットツールを使っている人も多いと思いますが、こういったチャットツールに自動的にメッセージを送るなどの機能も搭載可能です。

サーバーログの解析

VBAを用いれば、サーバー等のログ解析も効率的に行うことができます。 サーバー管理者にとって、ログは非常に重要な存在ですが、大量のログの解析には時間も手間もかかります。 VBAは、ログファイルのようなCSV含むテキストファイルも扱うことができます。 Microsoft社によって提供されているログ解析ツール 「Microsoft Log Parser」 を用いてログを解析し、結果としてCSVファイルを出力したり、先ほどご紹介したレポート作成の自動化を利用して、結果をまとめることもできます。

ユーザーインターフェースの作成

ユーザーインターフェースとは、ユーザーとシステムがやり取りをする際の接点のことで、広くはマウスやウィンドウ、アイコンやボタンなどを指します。 VBAを用いれば、このユーザーインターフェースを自由に作成することが可能です。 例えばExcelでデータ入力を行う際、セルを一つ一つ選択して入力し、値の種類を定義して桁数を揃えて・・・など、煩雑な操作が要求される場合がありますよね。 特にデータ量が多い場合には、より効率的に入力ができないだろうか、と思うことがあると思います。 VBAを使えば、そうした文字入力フォームを自作することができます。 その際、リストボックスやチェックボックスなどの機能も持たせることができるため、一つ一つ入力するよりも効率的な作業が可能となります。 これらのインターフェースを作成する事のメリットとしては 「VBAがわからない人にも使ってもらえる」 という点です。 例えば、情報システム部門などのプログラミングがわかる人間がVBAで仕組みを作成し、ボタンを押せば起動する仕組みにします。 それを生産部門に渡すことで、プログラミングのわからない現場の人間でも効率的に作業が出来ます。 こういった部門間のやり取りを通して ・社内全体のコミュニケーションの増加 ・より高度なシステムの導入 ・業務手順を客観的に見れる などの様々なメリットも生まれてきます。

Webサイト上でのスクレイピング

スクレイピングとは、Webサイトを巡回して必要なデータを抽出する作業のことを指します。 Web上にあるデータを分析し、有用なデータやサンプルとして利用したいデータを集めるには、人力では限界があります。 例えば、メーカー企業が、 「自社の商品は楽天市場・Amazon・ヤフーショップでそれぞれいくら位の金額で売られているのか」 という情報が欲しいとします。 あまりにも安価で売っている小売店がいれば、価格競争の原因にもなりますし、自社の将来的な利益の圧迫にも繋がるため、規制を設ける必要があるでしょう。 しかし、手動で複数商品・複数マーケットの価格をチェックするのは非常に大変です。 そこでスクレイピングにて、価格部分を自動的にエクセルにまとめていきます。 VBAを活用することで、これらの作業をボタン一つで行うことも可能になるため、企業の将来的なリスク回避に繋がります。 一般に、スクレイピングに向いているプログラミング言語と言えばPythonが有名ですが、VBAでスクレイピングを行うメリットも存在します。 例えば、同じMicrosoft社のInternet ExplorerやMicrosoft EdgeでもVBAは使うことができるため、新たに環境を用意する必要がなく、連携によって、スクレイピングの結果をExcelシート上に出力することも容易であるということが挙げられます。

WebAPIとの連携

APIとは「Application Programing Interface」の略称で、アプリケーションの機能を外部から利用できるようにする仕組みのことです。 有名なものがGoogleMapですよね。GoogleMapが部分的に組み込まれているWebサイトを見たことがあるかと思います。 VBAを使ってWebAPI連携を行うことで、天気予報の情報を取得してExcelに出力したり、ビジネスチャットアプリ「Chat Work」をExcelから操作したりすることが可能となります。 Microsoft社製のアプリケーション以外との連携も可能なため、幅広く効率化を図ることができます。

VBAではできないこと

VBAではできないこと

VBAではできないこと VBAを使えば、たしかに色々な場面で業務の効率化を図ることはできます。 しかしVBAも万能ではなく、できないことや苦手なことはあります。

大量のデータ処理

VBAでは、正常に処理しきれるデータの量に制限があります。 VBAを使ったデータ処理にはExcelを利用しますが、Excelのシートには上限があるため、それを超える量のデータ処理は行えません。 通常のシステムでは、データの管理をデータベースで行います。 エクセルと似たような形でデータを保管するものの、数百万・数千万行というデータを簡単に扱えるデータベースに対して、エクセルのシートで扱えるデータ量は、非常に少ないです。 そのため、作成するシステムの規模は自然と小さくなってしまいます。 また、複雑な処理になると処理速度が遅くなる、という点にも注意する必要があります。

細かい制御

VBAを活用する際に、細かい制御を設けることが難しいです。 例えば、ライン長が見ても良い情報と作業員が見ても良い情報は、同じではありません。 そのため、通常生産管理システムなどでは、システムにログインし、そのアカウントの管理権限に基づいて利用できる機能を分けます。 しかし、VBAではこれらの機能制限などを設けるのが非常に難しいため、あくまでも個人単位で利用する仕組みを作るのが精一杯でしょう。

アプリケーション開発

VBAはたしかにプログラミング言語の一種ですが、クリエイティブな開発が苦手とされています。 アプリケーション開発のように、デザイン面でクリエイティブな構築を行う必用がある場合には、VBAよりもPythonやJavaなどのプログラミング言語が好まれます。 そうした背景もあり、VBAの活用はOffice製品を利用した自動化、特にExcelの自動化に使われることが多いのが現状のようです。

データ管理

エクセルでデータを管理している企業も多いと思いますが、これらの問題点としては 「誰かが間違って消してしまう」 という危険性があるということでしょう。 ファイルそのものを間違って消してしまう。 ファイルの中身を消してしまう。 このようなトラブルは、日常茶飯事です。 また、作り方次第ではファイルの場所を移動させると機能しなくなるようなプログラムにもなります。 この様に、重要なデータの管理をする上ではVBAを活用するのはおすすめできません。

マクロを利用するなら本格的なシステム開発を視野に!ご相談はAMELAに

マクロを利用するなら本格的なシステム開発を視野に!ご相談はAMELAに

マクロを利用するなら本格的なシステム開発を視野に!ご相談はAMELAに 今回は、マクロとVBAについて見てきました。 日本では、Microsoft製品を利用している企業が非常に多いですが、中には非常に難しいことをVBAで行っている例も見られます。 特に、工場などの現場では、特定の管理職の人だけが非常にVBAに強く、独自の文化が出来上がっている事も珍しくありません。 そういった中で、マクロやVBAには幾つかのリスクがあります。 1つは本文中にも少しお話した ・扱えるデータ量の限界 ・大規模なシステムは不向き ・管理権限 ・実行速度が遅い です。 それ以外にも、 ・現場に依存する仕組みは引き継ぎなどの問題を抱える ・社内全体に情報共有が難しい ・本社で導入する予定のシステムとの間に壁が生じる なども考えられます。 将来的な事を考えた上では、VBAを活用するよりは、本格的にシステムを構築することをおすすめします。 「資金に余裕が無いからVBAで内製している」 という企業も多いと思いますが、実は ・VBAの学習に対する人件費 ・実行時間が遅いために発生する人件費 ・中途半端に人間の作業が介入するためにかかる人件費 ・マクロのメンテナンスでかかる人件費 ・データ抽出にかかる人件費 など、様々な人件費を考慮した場合、システム開発を依頼した方が安くなるケースが多々あります。 AMELAでは、オフショア開発を通して、人件費の安い国のエンジニアに依頼する事により、品質は担保しながらも、比較的安価にシステム開発を行っています。 ですので、今の作業の効率化を最大限行いながらも、 ・将来的にメンテナンスが容易 ・人員の移動があっても引き継ぎが少なくて済む ・社内全体の業務/結果/在庫などが見える化できる といった非常に大きなメリットも得られます。 是非ご相談ください。