RPAとマクロ/VBAの違いは?

2020/07/17 コラム



 RPA (ロボティック・プロセス・オートメーション: Robotic Process Automation)の導入をする際に、引き合いに出されるかもしれないのがマクロやVBAである。「自動化ならExcelのマクロやVBAでもできるのでは?わざわざお金を払ってRPAを導入する意義は何なのか?」という意見を持つ人もいるかもしれない。この記事では、そういう人にRPAとマクロ/VBAの違いをどう説明するかを見ていくことにする。

 

Excelマクロにも記録機能があるが

 パソコンを買うと、ほぼついてくるMicrosoft Office。もしくは会社のパソコンでもほとんどの人が標準で入れているであろう。このExcelにもマクロ/VBAという自動化機能が標準で備わっている。最近のバージョンでは、マクロ機能は標準では表示されず、リボンの設定で「開発」タブを表示するようにすると使えるようになる。「マクロの記録」ボタンを押すと、Excel上での操作がマクロに記録される。

 操作を行った後、リボン上の「記録の終了」ボタンを押した後、「マクロ」の編集を開いてみると、以下のように、Excelで行った操作がExcel VBAのコードに変換されていることがわかるだろう。これは、ある意味RPAにおけるレコーダーに近い動作だ。むしろ、Excelのマクロの記録の方が昔からあったものである。

 それでは、この機能を使ってすべて自動化すればいいかというと、それは検討が必要である。一般論としては以下の点を考慮されたい。

Excelマクロが得意な点

  • Excel内での操作をVBAまたは画面操作でコード化できる
  • 安定的かつ高速な処理が可能。(最近はExcelのバージョンがあがっても、マクロの互換性はほぼ問題ない)
  • ソフトウェアの追加コストはかからない

 

Excelマクロが苦手な点

  • 一度コード化してしまうと、読み解くにはプログラミング技術が必要。編集もVBAコードの変更を行う必要がある。
  • Excel以外のアプリケーションとの連携は(標準では)できない。(できなくはないが、プログラミング上の工夫がかなり必要)
  • VBAエンジニアを追加で雇おうとすると、エンジニアコストがかかる。

RPAを導入したほうがいい場合

  • RPAで操作が簡単化されている典型的な業務シナリオに該当する場合。
  • Excel以外のアプリケーションとの連携など、幅広いアプリケーションと連携する業務を扱う場合。
  • 使用者がプログラミングスキルを持っていない現場ユーザーの場合 (簡単なシナリオに限る)
  • 複数人で自動化プロジェクトを行う場合。
  • 組織横断でプロジェクトを実施し、管理、監督、セキュリティ対応などが必要になる場合。

 

RPAを導入しなくてもよい場合

  • Excel内での操作に限定された自動化の場合。
  • RPAに備わっている利用シナリオにはない自動化をする場合。
  • 使用者がVBAを扱えるプログラミングスキルがある場合。
  • 自動化プロジェクトを行うのが1人のみの場合。

    VBA/マクロにはないRPAの特徴は?

     RPAは、まず使用者が現場で業務を実施していてエンジニアでなくても業務フローを構築できる。開発言語の中では簡単な部類に入るとはいえ、Visual Basicを覚える必要もない※。以下の画面のように、業務フローをドラッグ&ドロップで直感的に構築していくことができ、画面のレコーディング機能で、画面操作をしていくだけで業務フローが自動生成される。

     また、忘れられがちなのが、個人が業務フローの自動化を構築する場面だけでなく、その後の運用、メンテナンス等を組織として行っていく場合である。プロジェクト関係者が複数人いたり組織横断になる場合は特に、管理、監督、セキュリティ対応などのサーバ型RPAの機能が必要となってくるだろう。

     失敗しないRPA導入のために—RPAの種類とそれぞれのメリット・デメリットを知る

     

    RPAExcelの自動化をしようとする際の注意点

     では、すべての業務シナリオでVBA/マクロよりもRPAが優れているかというと、そういうわけでもない。先に出てきたRPAのレコーディング機能は、実はExcelアプリケーションの画面内のどのセルを操作するか、といったレベルでの記録を行うことはできない。RPAのレコーディング機能で実現できるのは、あくまでもExcelアプリケーションの画面をUI要素として認識するため、たとえばリボンの中の各ボタンや数式バー、セルウィンドウ全体、といった単位では認識するが、セルのアドレスひとつひとつを認識することはできない。

     また、RPAで提供されているExcel関係のコマンドは多いRPAソフトだと100種類くらい提供されているものもあるが、Excel VBAで提供されているオブジェクト/クラス/メソッドは数百種類以上にも及んでおり、小回りが利くことも含めてできることはExcel VBAの方が圧倒的に多い。RPAでコマンドが提供されているものについても、「ファイルを開く」「ファイルを閉じる」「セルに書き込む」など、VBA1メソッドがRPA1コマンドに対応しているだけのものは、結局RPAでも同じことをすることになるので作成難易度は下がらないことになる。

     そのため、実際にはExcel VBARPAの併用で自動化するのが現実解である場合も多い。RPAで自動化するべきものは、VBAの複数のメソッドで実行できることがRPAでは1つのコマンドで実行できる業務シナリオや他のアプリケーションとの連携がある場合などである。典型的な業務シナリオは以下のとおりである。

    • Excelファイルの表から情報を読み出す
    • ブラウザーの情報をExcelに転記する
    • Excelの情報を外部アプリに画面入力する
    • Excelの情報をメール送信する

     

     以下の記事でも具体的な実装の比較を行っているので参照してみるとよいだろう。

    RPAとマクロ/VBAの違いは? ~Automation Anywhere Enterprise A2019と比較してみた

     

    まとめ: RPAが得意な典型的なシナリオである場合、管理機能が必要な場合はRPA

     以上、まとめると、RPAで用意されている典型的な業務シナリオにあてはまる自動化プロジェクトを非エンジニアの現場ユーザーで実施しようとする場合や、複数人/組織横断で管理機能が必要になる場合は、サーバ型RPAも選択肢に入ってくるだろう。

     

    RPAソフトによっては、少し高度なことをやろうとするとVisual Basic ScriptVisual Basic.NETの知識とスキルが必要になるものがあるので注意。