RPAとVBAの違い

RPAとVBAの違い

パソコン操作の自動化と聞いた時に、「マクロ」や「VBA」という言葉を思い浮かべる方も多いかもしれません。マクロとは「コンピュータの処理を自動化する技術」の総称であり、自動化するための手順を記録し、実行することができます。一方、VBAはMicrosoftがOffice製品の拡張機能として提供しているプログラミング言語のことを言います。なので、VBAとは具体的にはマクロを作成するためのプログラミング言語のことを指しており、マクロで行われる処理はVBAなどのプログラミング言語によって記述されています。

では、RPAとVBAの違いは何でしょうか。最も大きな違いは、RPAがOffice製品に限らず自動化できるのに対して、VBAはOffice製品に限定して自動化できるという所です。またRPAがプログラミング経験がなくても操作できるのに対し、VBAはプログラミングの知識が必要になる点も大きな違いとなります。

とはいえ、ここで言葉だけで説明しても違いが良くわからないのではないでしょうか。ここでは簡単な事例を通して、RPAとVBAの違いについて具体的に見ていきたいと思います。RPAツールは「Power Automate Desktop」というMicrosoftが提供している無料のツールを使っていきます。

→RPAについての簡単な概要はこちら

1. 前提

まず下図のようなExcelシートを用意します。こちらは森田くん、小山くん、斎藤さんという営業マン3人の売上管理シートになります。左側にそれぞれ見込み先の会社名、担当、進捗、成約確率、案件単価、成約率と案件単価を掛け合わせた売上見込み金額が記入されているグラフがあり、右側に各個人の目標、達成率、スケジュール進捗、売上見込み欄があります。今回は左側の売上見込み欄を各個人毎に集計して、右側の売上見込みに記載するというゴールを設定してRPA、VBAでそれぞれどう実現するかを見ていきたいと思います。

2. RPAで実装

まずはRPAで自動化していきましょう。下図の左上の「新しいフロー」という箇所から新しくシナリオを作成します。シナリオとはRPAロボットに行わせる命令のことを言います。新しいシナリオを押すとシナリオの名前を入力できる画面がポップアップしますが、今回、シナリオの名前は「VBAとRPAの違い:事例」としました。

作成ボタンを押して、フローを作成すると、下図のようなウィンドウが新しく立ち上がると思います。左側のアクションという項目からロボットに行わせる命令を選んでいくことになります。

例えば、Excelを操作する命令はアクションリストの「Excel」という項目をプルダウンすると下図のようにメニューが現れます。これらを組み合わせて、シナリオを作っていくことになります。行いたい命令の項目の上でマウスをクリックし、クリックしたまま画面中央部の「ここにはまだアクションがありません」という箇所までドラッグ、クリックを終えれば、無事、操作は終了です。更に命令を行わせたい場合も同様に操作をすることができます。

画面中央部が以下のような表示に変われば、操作成功です。Excelの起動の場合、新規でExcelを起動するか、既存だと起動するExcelファイルのURLを求められるので、そちらを入力してください。

ちなみに、一度、シナリオに組み込んだ命令に関してはショートカットが有効で、「Ctrl + C」でコピーして「Ctrl + V」で貼り付けることができます。「Ctrl + X」の場合は切り取りになります。「Ctrl + A」で全選択できます。(Power Automate Desktopはシステムの動作環境がWindowsであり、Macの場合はWindowsOSを搭載した仮想環境を別途用意しないといけないので、Mac用のショートカットは省略させていただきます。)

→詳しいPower Automate Desktopの動作環境はこちらでご確認ください。

具体的な実装フローは下図のようになります。まずは今回対象となるExcelファイルを起動します。その後、各担当者の売上見込みを入れるための変数リストとExcelに出力する数値を計算するための変数を設定します。変数とはある値を入れる箱のようなものです。変数を設定し終わったら、Excelのワークシートから記述のある行数を取得します。記述のある行数を直接取得する方法はなかったので今回は最初に空行が出てくる行を取得しています。

その後は最初の行を飛ばした2行目から(取得した行数 – 1)行(最後の空行を飛ばす)までループし、各行のセルから担当者と売上見込み金額を取得します。取得した値を担当者毎の変数に足し上げて言って、最初に用意した変数リストに代入していきます。シナリオを見て気づいた方もいらっしゃるかもしれませんが、ループの処理を2行目から始めると言っているのに、「from 1」となっているのはこれらのループ処理が0, 1, 2…という順番で始まっているからです。

最後は、その変数リストを今回の目標であるExcel右側の売上見込みという欄に出力していけば完了です。今回は森田さんの売上見込み金額をセルをアクティブにし、書き込みが終わる度にセルを右側に1つ移動するような操作をしています。

実行結果は以下のようになります。進捗がオンしていたら緑色になるのはExcelで設定してあります。小山くんがビハインド、森田くんと斎藤さんがオンしている結果となりました。今回データの数は27個でしたが、こちらは1,000個になろうが10,000個になろうが、きちんと計算してくれるのがRPAの強みです。ここに他の人が加わったとしても、最初に設定した変数を少し変更するだけで、動かすことができます。こういった変更などが起きた際に直しやすく構築できるのもRPAの強みと言えます。

3. VBAで実装

VBAで実装する場合には、まず開発タブにある「Visual Basic」という所をクリックします。開発タブはデフォルトでは非表示になっているので、「ファイル」→「その他」→「オプション」→「リボンのユーザー設定」から「開発」を追加するようにしてください。

「Visual Basic」の画面がうまく開けたら以下のような画面が開くと思うので、「Sheet1」をダブルクリックしてください。そうすると、コードを書く画面が現れます。

VBAでRPAと同じ処理をさせるには以下のように記述します。RPAの場合と似ていますが、まずは担当者の売上を入れる変数リストを作成し、行数分のループ処理の中で、出力先のセルに担当者に応じて、足し上げていっています。やり方はRPAと全く同じですが、VBAの方がRPAに比べて少ない手順で実行できています。RPAは、直接Excelのセル値を足し上げて計算する方法がなかったので一旦変数に入れてから計算しなくてはいけなかったりした分、手順の量は多くなってしまった感じですね。

実行結果は以下のようになります。結果はRPAの時と全く一緒ですね。こちらもデータ量が増えても特に対応することなく動きます。担当者の数が増えたときもelseif文を少し追加してあげることで対応することができます。プログラミングに慣れているとRPAよりVBAの方が読みやすかったりしますが、そうでないとパズルのようにグラフィック操作ができるRPAはとても使いやすいツールだと言えます。

ちなみに、RPAツールではマクロを実行することができるものもあります。先ほど作成したマクロをRPAで実行すれば命令はたった2つで済みます。どちらも使えるのならばExcelの操作はVBAで、アプリケーション間を跨ぐ操作はRPAでと両者の長所を活かすような処理を行うことができるようになりそうですね。

以上、RPAとVBAの事例を通しての違いでした。少しは理解が深まったでしょうか。RPAについてもっと興味が湧いたとかありましたら、ぜひ別の記事も見てくださいね。

→RPAについてもっと知りたい方はこちら

執筆者プロフィール

伊藤 丈裕

(株)サムテックのシステムエンジニア。応用情報技術者資格保有。
27歳の時、営業から完全未経験で転職。開発とWebマーケティングを担当。得意言語はJavaとJavaScript。