Posted at

【UiPath】エクセルからコピーしてシステムに貼り付ける動作をExcel無しで行った

タイトル分かりにくいですよね。すみません。。

背景としましては、

作業員の方が作業する際は、システムに40項目くらいある(横一列の)項目を一つ一つ手で入力していっているらしい。

ただ実はもう一つやり方があって、ExcelからデータをCtrl+Cでコピーして、基幹システムにそのままCtrl+Vで貼り付けるというやり方でもうまくいくらしい。

※Excelのイメージ図

image.png

UiPathで実行する際には、Excelからコピーをしてきて、Ctrl+Vで貼り付けるのが確実だろうということで、そちらを採用することにしました。


最大の課題:別にExcelからデータを取ってくるわけでもないのに、Excel開きたくねぇ

そうなんです。実はこのやり方を採用しようとしていて、、、


  1. データをいろんなところから取ってくる

  2. UiPath内部でデータテーブルを構築して、データテーブルに整理して格納する。

  3. Excel開く

  4. Excelに範囲を書き込み

  5. Excelからコピー

  6. システムに貼り付ける

3~5はできればExcel使いたくねぇ!!

となっていました。

そしてどうやったかといいますと。。。


ExcelはTabで区切られた一つの文字列らしい

Excelからデータをコピーしてメモ帳に貼り付けると、こうなるんですよ。

aa  ii  uu  ee  oo  kaka    kiki    kuku    keke    koko

Excelってタブ区切りなのか!!

というわけで、


  1. データをいろんなところから取ってくる

  2. UiPath内部でデータテーブルを構築して、データテーブルに整理して格納する。

  3. Excel開く

  4. Excelに範囲を書き込み

  5. Excelからコピー

  6. システムに貼り付ける

これから、


  1. データをいろんなところから取ってくる

  2. UiPath内部でデータテーブルを構築して、データテーブルに整理して格納する。

  3. データテーブルを出力する

  4. (ヘッダーが一行目にくっついてきてしまうので)一行目を削除する

  5. カンマをタブに置換する

  6. システムに貼り付ける

これに置き換えました。ちなみにこれでいけました。すごい!


技術的な話

データテーブルを出力して、一行目を削除して、カンマをタブ区切りにした。

image.png

一行目を削除はこちら

str_data.Remove(0, str_data.IndexOf(vblf)+1)

カンマをタブ区切りにした(なぜかvbTabだとできなかったです。何が違うんだろう)

str_data.Replace(",", ControlChars.Tab)

です!

Excelがタブ区切りだってことに驚き!!しかも、技術的にそんな難しくないですね!


おわりに

Excelからコピーして何かに貼り付ける作業で、Excelを開きたくないことから始まった戦いですが、無事にExcelを開くことなく完成しました。

なかなかこの現象を伝えるのが難しいですが、うまく伝わりましたでしょうか...?

ぜひ活用してみてください!