以前より使っている Windows マクロ作成ソフトの UWSC と、最近流行っている RPA ソフトの UiPath の操作比較をしたいと思います。
いずれのツールも画面操作を自動化することができるものですが、両者は以下の点で異なります。
●UWSC はプログラミング
●UiPath はプログラミングの考え方を必要とするツール
何年か前から Windows マクロを作れる UWSC というプログラミングを使っています。Excel VBA で作成したマクロと UWSC で作成したマクロを組み合わせて使って、・Excel のシート上のデータをワンクリックで会計ソフトに取り込んだり・Excel の保険料控除申告書のデータをワンクリックで税務ソフトに取り込んだりこういった↑作業の自動化をしてきました。内容については、こちらの記事に以前書きました↓これらの仕組みとしてはExcel 内部のデータ処理は Excel VBA で行い、会計ソフトの操作を UWSC に任せています。Excel VBA と UWSC は... RPA ソフト 「UiPath」 と Windows マクロ作成ソフト 「UWSC」 の比較、CSV ファイ... - My タックスノロジー |
これらのツールの魅力は本来は連携できないツール同士を連携できることです。
さて、今日は Excel シートの内容をメモ帳に書き出す操作について UiPath(RPA) と UWSC の両方のツールを比較します。
色々と応用を効かせることができる内容だと思っています。 (まぁ、今回の内容は本当言ってしまえば Excel VBA のみでも可能なことではありますが。。)
1、今回行う作業内容
今回行う作業の内容を以下に書きます。
Excel シート(ファイル名「Test.xlsx」)の中の「テスト」シートの中にある毎月の売上高のデータをメモ帳に書き出す作業を自動化したいと思います。
A列に「月」、B列に「売上高」を12ヶ月分並べてあります。
上記のシートの A列(月)、B列(売上高)のの内容をメモ帳に書き出します。
Excel シートとメモ帳の両方を PC 画面上に開いた状態で実行することとします。
Excel 内部の操作であれば VBA のみを使って自動化できますが、このように異なるアプリをまたぐ操作の自動化ではUWSC や UiPath(RPA) を使わなければなりません。
今回の例そのものを直接的に何か使うケースがあるかと言えば??ですが、アプリ間をまたぐ操作を自動化する上で色々と応用を効かせることができる内容だと思っています。
2、UWSC でExcel シートの内容をメモ帳にコピペする方法
まずは UWSC から行きたいと思います!
UWSC コードはメモ帳に書き込んで「.UWS」の形式で保存する必要があります。
UWSC コード
以下のコードを書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ExcelObj = GETACTIVEOLEOBJ("Excel.Application") NoteID = GETID("メモ帳") //既に開いているメモ帳の ID を取得 FOR i = 1 TO 12 Excel_Tsuki = ExcelObj.Cells[i+1,1].Value //月 Excel_Uriage = ExcelObj.ActiveSheet.Cells[i+1,2].Value //月ごとの売上高 SENDSTR(NoteID, Excel_Tsuki) //月をメモ帳に書き出す KBD(VK_TAB) //TAB キーを押す SENDSTR(NoteID, Excel_Uriage) //売上高をメモ帳に書き出す KBD(VK_ENTER) //ENTER キーを押す NEXT |
UWSC コード説明
上記コードの内容を説明します。
GETACTIVEOLEOBJ 関数
GETACTIVEOLEOBJ 関数は既に起動しているオブジェクトを操作するために使います。
以下のように記述して使います。
今回はオブジェクトとして Excel を指定するのでオブジェクト名を”Excel.Application”としています。
そして、以下の式でそのオブジェクトを変数「ExcelObj」に入れ込んでいます。
ExcelObj = GETACTIVEOLEOBJ(“Excel.Application”)
GETID 関数
GETID 関数はウインドウの ID を返す関数です。
以下のように記述して使います。
既に開いているメモ帳のウインドウ名を取得する場合には GETID(“メモ帳”) のように記述します。
そして、取得したメモ帳の ID を変数「NoteID」に入れ込んでいます。
ちなみに新たなメモ帳を作成して ID を取得して変数に入れ込む場合には、
NoteID = EXEC(“notepad”)
と記述する必要があります。
以下のサイトが大変参考になります。
FOR 文を使った繰り返し作業
さて、UWSC の繰り返し作業には FOR 文を使います。
(VBA と似ててやりやすいですね。)
FOR 文は以下のように記述して使います。
使う変数を i とします。
今回の場合は、Excel 上の4月~3月の12ヶ月分のデータを1行ずつメモ帳に書き出すので
・変数を i
・開始値を 1
・終了値を 12
としています。
12回同じ作業を繰り返すということですね。
そして、「処理」の部分では各月ごとの Excel シート上のデータをメモ帳に書き出す作業を行っているのです。
以下で12回繰り返す FOR 文の中身について説明します。
Excel シート上のセルの値を変数に入れ込む
Excel シート上のセルの値は次のように記述して指定します。
今回は
・操作対象は一番最初で作った Excel オブジェクトなので「オブジェクト名」は「ExcelObj」
・現在開いているシートを対象としたいので「エクセルシート名」はアクティブになっているシートを表す「ActiveSheet」
・セルの指定は変数 i を用いて月のセルを Cells[i+1,1]、売上高のセルを Cells[i+1,2]
としています。
セルの指定は行番号、列番号を以下のように指定します。
i を 1~12 まで変化させることで
・月については Excel シート上のセル「A2~A13」
・売上高についてはExcel シート上のセル「B2~B13」
の値を読み込んでいます。
こうして1行ずつ読み込む値は変数に入れ込んでその都度メモ帳に書き出しているのです。
変数に読み込む部分は以下の部分です。
月↓
Excel_Tsuki = ExcelObj..Cells[i+1,1].Value
売上高↓
Excel_Uriage = ExcelObj.ActiveSheet.Cells[i+1,2].Value
SENDSTR 関数
メモ帳に書き出す際には SENDSTR 関数を用いて先に取得してメモ帳の ID を使って書き出し先を指定しなければいけません。
SENDSTR 関数は文字列を書き出す関数です。以下のようにして使います。
今回の場合は、書き出し先はメモ帳になるのでメモ帳の ID 番号(NoteID)を使います。
書き出す内容は「月」「売上高」の2つです。
月を書き出す部分↓
先に読み込んだID 番号 NoteID と「月」のデータ Excel_Tsuki を使います。
SENDSTR(NoteID, Excel_Tsuki)
売上高を書き出す部分↓
先に読み込んだID 番号 NoteID と「売上高」のデータ Excel_Uriage を使います。
SENDSTR(NoteID, Excel_Uriage)
KBD関数 TAB キー、ENTER キーを押す
KBD関数はキーボード操作を行う関数です。
以下のように記述して行います。
メモ帳に書き出す際に「月」と「売上高」の記述に間隔を空けるために TAB キーを使います。
その場合キー名を「VK_TAB」として以下のように書きます。
KBD(VK_TAB)
メモ帳に「月」を書き出した後にこの関数を入れて間隔を開けています。
メモ帳に1月分のデータを書き出したら改行するために ENTER キーを使います。
その場合キー名を「VK_ENTER」として以下のように書きます。
KBD(VK_ENTER)
メモ帳に「売上高」を書き出した後にこの関数を入れて改行しています。
UWSC コードの実行
さて、このようにして作り上げだ UWSC コードを実行した動画がこちらになります。
コードの実行方法についてはこちらの記事を参考にして下さい↓
マクロは PC 上の操作を自動化する機能のことです。私はよくブログに書くように、Excel VBA でマクロを作って Excel内での操作を自動化します。Excel マクロとは別にいわゆる Windows 画面での操作を自動化する Windows マクロというものも存在します。Windows マクロを作るためには、UWSC というプログラミング言語を使う必要があります (他にもWindows マクロを作る方法はあるのかもしれませんが、私は知りません)。これを使えるようになれば、会計事務所・経理職の業務で色々と活用することができます。今日は、まず UWSC の初歩的... UWSC で Windows マクロを作って画面操作を自動化できる、会計事務所・経理職で使え... - My タックスノロジー |
わりと早く書き出し作業が終わる様子が分かると思います。
Excel 画面上で VBA を使って操作を実行する方法
Excel 画面上で VBA を使って操作を実行することもできます。
以下のように Excel シート上にボタンを設置して、そこに今回の UWSC コードを実行する VBA を組み込んでおきます。
(すみませんが、VBA コードは今回は割愛させて頂きます。)
こうすれば Excel 上でワンクリックするだけでデータをメモ帳に書き出すことができます。
3、UiPath でExcel シートの内容をメモ帳にコピペする方法
さて、次は UiPath を使って同じことを行いたいと思います。
UiPath では画面左側の「Activities」から必要な項目を選択して作業を作り上げて行きます。
今回の全ての操作は次のようになりました。最初に示しておきます。
以下で上記の操作1つ1つについて説明して行きます。
Excel を操作対象にしてファイル名を指定、シート名と範囲を指定
まず最初に Excel を操作対象にします。
Activities から「Excel application scope」をドラッグしましょう。
次に、Excel シートからデータを読み込むためにActivities から「Read Range」を上の画面の「Do」の中にドラッグします。
そして、以下のように
・ファイル名(選択して指定)
・シート名
・セルの範囲
を指定します。
範囲については、「””」と入力することで、指定したシート上の全ての範囲を読み込むことになります。
私は今回 Excel ファイル名を「Test.xlsx」としてあり、シート名を「テスト」としてあります。
なお、ここで読み込んだセルの範囲のデータを後々使うために画面右側の「Properties」の設定をしておきます。
Output の「Data Table」のボックスを選択して「Ctrl + K」を押してから名前を入れましょう。
私は今回「test」と名づけました。
また、Options の「Add Headers」にチェックを付けることで Excel シート(名前は「テスト」)の先頭行を見出しとして扱うようになります。
シートから1行ずつ読み込んでメモ帳に書き出す作業
次にシートから1行ずつデータを読み込んでメモ帳に書き出す繰り返し作業を行うための設定を行います。
Activities から「For each row」をドラッグしましょう。
以下の画面が出てくるので「row」と「test」を入力します。
なお、「test」は先に Output の「Data Table」で今回私が名付けた名前です。
名前によっては受け付けられないものもあり、基準がよく分かりません。。。
(test はエラーが出ませんでした)
「Body」の中に繰り返し行う作業を表記します。
以下の内容は繰り返し行うことなので、全て上図の「Body」の中に表記することとなります。
画面録画
上記の繰り返し作業として「Body」の中に入れ込む作業を設定するために、レコーディング機能でメモ帳に書き込む操作を記録します。
「Recording」の「Desktop」を選択します。
続いて「Record」を選択して、画面録画できる状態にしましょう。
この状態で、既に開いてあるメモ帳(ファイル名「メモ帳テスト.txt」)に「123」と書き込んでみます。
ここで録画を終了(Esc ボタンを押す)して、「Save & Exit」をクリックします。
すると今の操作が記録されてきます。先に「123」と入力した部分は以下のように表示されます。
上記の入力(123)を今回準備した Excel シート上の値に置き換えてあげればよいわけですね。
メモ帳に「日付」を書き出し
まず、メモ帳に「日付」を書き出します。
日付は Excel シート上↓で見出しが「月」となっている列(A列)に表記されています。
先頭行を見出しとして設定してあるので、「Type」のボックスに「row(“月”).ToString」と入力します。
(「123」と入力してあるのを書き換える)
これにより、A列の2行目以下が書き出されていきます。
TAB キーを押す
さて、「月」を書き出したら次に「売上高」を書き出す前に間隔を空けるために「TAB」キーを押します。
Activities の「Send Hotkey」をドラッグして「key」で「tab」を選択しましょう。
メモ帳に「売上高」を書き出し
次に先の「Type」をコピペ(Ctrl + C → Ctrl V)して、ボックスの中を書き換えます。
売上高の列なので「row(“売上高”).ToString」とします。
ENTER キーを押す
次に、次の月の読み込みをする前に改行するために「ENTER」キーを押します。
Activities の「Send Hotkey」をドラッグして「key」で「enter」を選択しましょう。
UiPath(RPA) 実行
さて、このようにして作り上げだロボットを実行した動画がこちらになります。
書き出し作業は UWSC よりも時間がかかりますかね。
4、まとめ
さて、今日は Excel シートの内容をメモ帳に書き出す場合について UiPath(RPA) と UWSC の両方のツールを比較してみました。
UWSC はずっと前から使っていたので「こんなもんか!」という感覚はありましたが、UiPath(RPA)は初めてです。
今回の操作については、UWSC の方が早いですね!
ただ、この記事で詳しくは書きませんが UWSC は独特の不安定さがあり、操作が上手く再現しないこともあります(今回の事例ではない)。
UiPath(RPA) と UWSC 両者を比較しながら、どちらをどのように使うのが良いか色々と試して行きたいですね。