https://ciprogram.jp

最近の投稿

スポンサーリンク

RPA

【RPA】Blue PrismのVBOのOLEDBを使ってみたら処理速いし、これは面白い。Collectionに入れて処理すると遅い場合検討の余地あり。

台帳からCSVファイルをRPAで作るためにCollectionに入れて操作するも……

書いてて思ったけどさ、それってRPAが担うべき業務なのか……

いや、そもそもユーザーにやらせるような業務なのかという発見が、業務改革をしていると多々あります。

システム子会社、複数投入機能作れなかったんならアップロード用ファイル作成用のマクロでもなんでもいいから作ってやれよと。

というところからユーザーとシステムの隔たりが出ていくんでしょうね。

てことで、台帳からCSVファイルを作るプロセスを作って動作検証してみました。

……

おそい。

ランタイムリソースの性能のせい?

いや、数万件のマスタを4本取り込んで数千件のデータチェックするマクロをぶん回しても固まらないゾ。

処理のせい?

いや、必要最低限な条件分岐と読み替えでCSV作ってるのに……

どないしよ。

マクロで対応するか?

OLEDB……そんなVBOもあるのか、Blue Prism

ドキュメントをひっくり返してみると、発見! OLEDB!

昔少しだけ触れたことがあるけど、そんなものまであるのね。

OLEDBについて簡単に説明するとすれば、ファイルを読み込んでテーブルに対する操作(UPDATE、INSERT、DELETE)ができると。

システム作ってる人ならこっちの方がデータに対して操作しやすいかも。

しかもBlue Prismのドキュメントによるとファイルをメモリ上にすべて展開しなくてすむから、速度と効率が向上するですって!

ふむふむ

楽しそう

試してみよう。

まずはVBOをインポート

▼Data - DLEDBは例の場所に入っているのでそれをインポート

▼サクッと完了

 

Data - DLEDBを構成するのは――

  • Set Connection
  • Open
  • Close
  • Get Collection
  • Execute

非常にシンプルな構成。

では、試しに操作してみましょう。

流れとしては――

  1. コネクションオープン
  2. 操作
  3. コネクションクローズ

まずは、コネクションオープンです。

その為に、接続文字列をセットします。


Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\temp\GDP.xlsx";Extended Properties="Excel 12.0 Xml;HDR=YES;"

Extended Propertiesはおまじないみたいなもの。

HDRはヘッダーが項目なのか、それともいきなりデータが始まるのかを設定。

例えばヘッダー有のCSVを取り込みたい場合は――


Extended Properties="Text;HDR=YES;FMT=Delimited"

となります。

もし以下エラーが出たらMicrosoft Access データベース エンジンをダウンロードしてリトライしてみましょう。

内部 : コードステージによって例外がスローされたため、コードステージを実行できませんでした。 'Microsoft.ACE.OLEDB.12.0' プロバイダーはローカルのコンピューターに登録されていません。

 

OLEDBでExcelをテーブルのようにSQLで操作してみる

▼日本のGDPを操作してみる

 

▼プロセスはこんな感じ

▼コネクションは以下のように渡しました。


Provider=Microsoft.ACE.OLEDB.12.0;Data Source="C:\temp\GDP.xlsx";Extended Properties="Excel 12.0 Xml;HDR=YES;"

これをVBOにするならデータソースの部分は、引数にして柔軟性を持たせてあげてもいいかもね。

▼SQLはこんな感じ


UPDATE [GDP$] SET 百万USD = 100 WHERE 国名 = '日本'

Excelの場合、シート名がテーブル名になります。[シート名$]と表記してください。

なんだか他国のを操作するのも感じ悪いし、かといってマシマシにするのもね……

例としてGDPっていうのはそぐわないっすね。

ということで他意はなく100をセットしてみます。

▼ミッション終了。さて結果はイカに

▼ちゃんとセットしてありますな。

 

OLEDB面白いですね。

アイディア次第ではいろいろ捗りそう。

 Microsoft AccessのSQLのサブセットが使えます

 DELETEステートメントは使えません

最近の投稿

スポンサーリンク

-RPA
-,

© 2024 ONE HUMAN UNIT Powered by AFFINGER5