【Power Automate Desktop】徹底比較|ExcelマクロとRPAの違いは?

PAD

「自動化でよく聞くけどRPAとマクロの具体的な違いがよくわからない」
「どういった場面でRPAとマクロを使い分けたらいいのかイメージがわかない」
「そもそもRPAとマクロってなに?」

この記事はこういった疑問をもたれている方に向けた内容です。

こちらをご覧いただくことによって次のような効果が期待されますので、気になる方はぜひ最後までご一読ください。

  • 「RPA」と「Excelマクロ」の違いを理解できる
  • 「Excelマクロ」の具体的なイメージがわかる
  • 「RPA」の具体的なイメージがわかる
スポンサーリンク

概要|「Excelマクロ」と「RPA」

まずは一覧形式で「Excelマクロ」と「RPA」のふたつの違いをおさえておきましょう。

 項目ExcelマクロRPA
自動化できるできる
プログラミングの知識必要すこし必要
汎用性低い高い
システム連携ムズカシイカンタン
Excelカンタンカンタン
Outlook(メール送信)ムズカシイカンタン

”なぜ同じMicrosoft OfficeであるOutlookの自動化が「ムズカシイ」の?”
といった疑問をもたれた方もいるかもしれませんが、これは単純に「Excelマクロ」の記述が複雑になってしまうからです。

Excelマクロ

「マクロ」とは、コンピューター処理を自動化するための機能です。

Excelの「ボタンを押すだけ」で、自動的に計算されたり、自動的に画面の表示が変わったりするものを一度は使われたことがある方も多いかと思います。

いろいろな場面で意外と身近に使われているマクロですが、「VBA(Visual Basic for Applications)」というプログラミング言語をつかって作成されています。

この「VBA」は、Microsoft Officeに搭載されているプログラミング言語で、ExcelのほかにもWord、Outlook、PowerPointなどでも使うことができます。

ただし、注意点として、基本的には自動化の適用範囲はMicrosoft Officeに限定されることになります。

  • 「マクロ」とは、コンピューター処理の自動化のための機能
  • 「VBA」とは、Microsoft Office用のプログラミング言語
  • 基本的な自動化の適用範囲はMicrosoft Officeに限定

RPA

「RPA」とは、「Robotic Process Automation」の略称で、直訳すれば「ロボットをもちいたプロセスの自動化」という意味になるコンピューター処理を自動化するための機能をもったツールのことです。

近年の「働き方改革」をきっかけに「作業の効率化」や「生産性の向上」を目的として「RPA」に注目が集まっていますので、一度は耳にしたことがあるかと思います。

この「RPA」の特徴としては、プログラミング言語をつかわずに自動化を実現する点があげられます。また、ExcelマクロのようにMicrosoft Officeに限定されることなく、ソフトウェアの枠にしばられない強みがあります。

そのため、既存のシステムを変更することなく「RPA」を導入することによって、自動化を実現できる可能性があります。

ただし、一般的に「RPA」は「単純な作業」の自動化を得意としている一方で、「複雑な作業」の自動化には不向きな側面があります。

  • 「RPA」とは、コンピューター処理の自動化のためのツール
  • プログラミング言語をつかわずに自動化の実現が可能
  • ソフトウェアの枠に制約されない適用範囲

スポンサーリンク

比較検討

いろいろな場面で意外と身近に使われている「Excelマクロ」ですが、実際にプログラムの中身を見たことはありますでしょうか。

まだご覧になられたことのない方やプログラミング初心者の方に向けて、カンタンな自動化の例をとおして具体的な「マクロ」のイメージをつかんでいただける内容をご紹介をします。

また、「Excelマクロ」で自動化した内容とおなじ動作を「RPA」をつかって再現することで両者の違いをわかりやすくご説明いたします。

今回の例でご紹介する処理内容はこちらです。

「C列」の値が「男性」である行のセルを黄色で塗りつぶして、メッセージボックスを表示する。

こちらが比較検討につかうExcelファイルです。

スポンサーリンク

Excelマクロ|自動化の概要

「Excelマクロ」をもちいた自動化の方法をご説明します。

実行結果

左側の図が「マクロの実行前」、右側の図が「マクロの実行後」の結果です。
ご覧のとおり、特定のセルが黄色で塗りつぶされていることと、メッセージボックスが表示されていることが確認できます。

「Excelマクロ」をつかった処理の流れ

まず最初に処理の「適用範囲」を指定します。
今回、「適用範囲」として「最終行がどこにあるか?」をプログラムでチェックします。

例でご紹介した一覧表をわたしたちが目でみれば「6行3列」の形をしていることがわかると思います。

行は「縦方向」に数字の「1」からはじまり、列は「横方向」にアルファベットの「A」からはじまります。

しかし、コンピューターは自動的に一覧表のかたちを判別をすることができませんので、マクロを作成するにあたってはコンピューターに明示的に一覧表の形を指定する必要がでてきます。

そのため、「適用範囲」として「最終行」を指定するためのプログラムを記述する必要があります。

今回の例での「最終」の設定は、「C列」を指定するかたちをとっています。

「最終行」とおなじ考え方をすれば「最終」もおなじ方法で設定するべきですが、基本的に一覧表の編集では”「行(縦方向)」に対しての追加は多いものの、「列(横方向)」に対しての追加は少ない”といった考え方に基づいているためです。

つぎに「繰り返し処理」の設定をします。
具体的には、開始行(2行目)から最終行(6行目)まで「順番にひとつずつ処理」をおこなう設定をします。

この「繰り返し処理」は、「Excelマクロ」だけでなく「RPA」やプログラミング全般の自動化にも共通する考え方ですので、是非ともおさえておいてください。

そして、”「C列」の値が「男性」であるかどうか”を判定するための「条件分岐」の設定をします。

普段エクセルをつかわれている方は、関数の「IF」をよく利用されているかと思いますが、マクロでもおなじような処理をおこなうことができます。

さいごにメッセージボックスを表示させる設定をします。

「Excelマクロ」の中身

長くなりましたが、上記の内容をふまえて構成したExcelマクロの内容はこちらです。

Excelマクロ特有のルールが含まれているため、少し理解しにくい内容となっていますが、まずはイメージをつかむためにひとつずつ順を追ってご確認ください。

【開始】マクロの名前:test1
「最終行」を設定:データ型「Long(長整数型)」で変数「last_row」を設定
「最終行」を設定:「A列」を基準にしてExcelのもっとも下の行(Excel2019では「1048576行目」)から上方向にみて、最初にデータがあった行を「最下行」とする

「繰り返し処理」の設定:「2行目」から「最終行」まで「順番にひとつずつ処理」をおこなうために変数「i」を設定
「条件分岐」の設定:もし「C列(列番号:3)」の値が「男性」ならば次の処理をおこなう
セル範囲「A列~C列」までを黄色で塗りつぶす

メッセージボックスの表示
【終了】

このあとで「RPA」をつかったフロー画面を掲載していますので、そちらと見比べていただいた方がイメージをつかみやすいかもしれません。

「2行目」:

「変数」とは、何かの値を入れておく箱のようなものです。
プログラミングでは、一時的にあつかう処理によって中身が変わるデータを「変数」という箱に保管してつかいます。

また、「データ型」とはプログラミングであつかうデータの種類ごとに分類されたものです。Excelマクロでは、あつかう「データ型」を明示的に指定する必要があります。

(参考:【Excel VBA入門】変数とは|エクセル マクロ

「3行目」:

「最終行」の設定について、具体的な取得方法はつぎのとおりです。
こちらの方法をつかうことによって、リストのなかに空白行がある場合でも終端セルを指定することができます。

  1. 「A列」のもっとも下の(Excel2019では「1048576行目」)のセルを指定
  2. 「Endプロパティ」をつかって、もっとも下のセルから上方向にむかって、最初に一致するセルを指定
  3. 「Rowプロパティ」をつかって「行番号」を取得する
  4. 「行番号」を「変数:last_row」に代入する

(参考:【Excel VBA入門】まとめ|最終行の取得とSUM関数マクロ

実際にExcelマクロのルールに基づいて記述した内容がこちらです。

Sub test1()
    Dim last_row As Long
    last_row = Cells(Rows.Count, 1).End(xlUp).Row
   
    For i = 2 To last_row
        If Cells(i, 3).Value = "男性" Then
            Range(Cells(i, 1), Cells(i, 3)).Interior.Color = RGB(255, 255, 0)
        End If
    Next i
    
    MsgBox ("完了しました!")
End Sub

スポンサーリンク

RPA|自動化の概要

左側の図が「RPA実行前」、右側の図が「RPA実行後」の結果です。
正確には、Excelを開くことも「RPA」による自動化に含めているため、「RPA実行前」はExcel画面が表示されていない状態です。

ご覧のとおり、Excelマクロでの結果とおなじように、特定のセルが黄色で塗りつぶされていることと、メッセージボックスが表示されていることが確認できます。

RPAツールの紹介|Power Automate Desktop

今回の検証に使用する「RPA」のツールはMicfosoftの「Power Automate Desktop」です。

こちらはWindows10ユーザーなら無料でつかえる「RPA」のツールで、Windows11には標準で搭載されています。

(参考:【Power Automate Desktop】Microsoftの無料RPA|ツールの概要

「RPA」をつかった処理の流れ

基本的な流れはExcelマクロの自動化とおなじですが、先ほどお伝えしたとおり、Excelを開くために「Excel の起動」というアクションを追加しています。

「Power Automate Desktop」では、フローに組み込む機能のことをアクションと呼びます。

「RPA」のフロー

それでは具体的な「RPA」のフローを確認しましょう。

手順1|Excel の起動

まずはExcelを開きます。

このとき変数が自動的に生成されて、開いているExcelファイルが変数「ExcelInstance」に代入されます。以降、このExcelファイルを指定する際には、変数「ExcelInstance」をつかいます。

手順2|Excel ワークシートから最初の空の列や行を取得

こちらのアクションをつかって、さきほど生成された変数「ExcelInstance」から最初の空の行を取得します。

取得した値は、変数「FirstFreeRow」に代入されます。
今回の例では、一覧表の6行目までデータが入力されている状態のため、最初の空白行である「7」が取得されることになります。

なお、Excelマクロでは「最終行」の取得に該当する設定です。

手順3|Loop

「Loop」アクションをつかって「繰り返し処理」を設定します。

「開始値」では、一覧表の「2行目」から開始させるために開始値に「2」を入力します。

また、「終了」では、先ほど取得した変数「FirstFreeRow」に「7」が代入されていますので、取得値の調整をおこないます。変数「FirstFreeRow」に代入されている「7」から「1」を差し引くことによって、「最終行」の行番号である「6」を取得します。

「増分」については、「1」を入力することによって「順番にひとつずつ処理」をおこなう設定としています。

結果的に、変数「LoopIndex」には以下のとおり値が代入されます。
この値をつかってセルの行番号を指定します。

「繰返し処理」の回数変数「LoopIndex」の値
1回目2
2回目3
3回目4
4回目5
5回目6
手順4|Excel ワークシートから読み取り

Excelファイルから「C列(列番号:3)」のデータを読み取ります。

手順3で「繰り返し処理」の設定をしているため、2行目から6行目まで「順番にひとつずつ処理」されます。

そのため、変数「ExcelData」には繰り返し回数に応じて「2行目」から「6行目」までで取得した値(「男性」 or 「女性」)が代入されることになります。

手順5|If

「If」アクションをつかって「条件分岐」の処理をおこないます。

手順4で取得した変数「ExcelData」の値(「男性」 or 「女性」)をもとにして分岐処理がおこなわれます。今回は値が「男性」であった場合、つぎのアクションに進む設定をしています。

なお、手順4とおなじように、手順3で「繰り返し処理」の設定をしているため「順番にひとつずつ処理」されます。

手順6|Excel ワークシート内のセルを選択

ワークシート内のセル範囲の指定をします。

「先頭列」を「1」、「最終列」を「3」とすることによって、「A列からC列まで」の範囲を指定しています。また、「先頭行」と「最終行」を変数「LoopIndex」とすることによって、手順3で取得した値にもとづいた行番号を指定しています。

「繰返し処理」の回数変数「LoopIndex」の値選択される行
1回目22行目
2回目33行目
3回目44行目
4回目55行目
5回目66行目
手順7|Excel マクロの実行

これまでの手順によって、条件にあうセル範囲が選択されますのでセルを黄色で塗りつぶします。

しかし、残念ながら今回選定したRPAツール「Power Automate Desktop」にはセルを塗りつぶすアクションが備わっていません。そのため、代替手段として「Excelマクロ」をあらかじめ設定しておき、それをRPA側で実行することによってこの問題を解消します。

こちらがあらかじめExcelファイル側で設定するマクロです。

Sub color()
    Selection.Interior.color = RGB(255, 255, 0)
End Sub
手順8|メッセージを表示

さいごにメッセージを表示させます。

スポンサーリンク

まとめ

Excelファイルの自動化に焦点をあてた実例をもちいて「Excelマクロ」と「RPA」の違いをご説明いたしましたが、具体的なイメージをつかんでいただけましたでしょうか。

今回はあえてMicrosoft Officeに特化した「Excelマクロ」と比較をしましたが、基本的にはプログラミング不要の「RPA」であっても、ある程度はプログラミングの知識が必要であることがおわかりいただけたかと思います。

また、どうしても細かな点については「RPA」では網羅しきれないポイントがあることについてもご理解いただけたかと思います。

ただし、ご紹介したように「RPA」をつかえば、「Excelマクロ」であつかえない領域も自動化の対象とすることができます。

どちらか一方だけをつかうのではなく、「組み合わせ」によっても可能性が広がりますので積極的につかってみてください。

さいごになりますが、こちらで今回ご紹介しましたMicfosoftの「Power Automate Desktop」の使い方や「Excelマクロ」の学習方法をこちらで解説していますので、よろしければご活用ください。