BizRobo! でCSVファイルを Excelのようにバックグラウンド処理する簡単な方法。

## はじめに

普段当たり前に使っている機能を「BizRobo! では使えない」と思い込んでることって、結構あります。

そんな例の一つとして、今回は `Buit-in-Excel`（以降、`組み込みExcel`）機能を使った BizRobo!での CSV 操作術を紹介します。

:::note
本記事は、BizRobo! v11.3.0.2 の利用を前提に解説します。
:::

## `組み込みExcel` による CSV 操作のプロコン[^6]

[^6]: Pros & Cons

多くの場合、BizRobo! での CSV 操作には `Basic Engine Robot` のCSV読込機能（View as CSV）が利用されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/f898998e-876e-dedd-ef9a-d12ed408ae1b.png)
この方法は非常に手軽なので、入門者が割と早い段階で利用し始める機能だと思いますが、それゆえに「同じことを他の方法で試そうと思わない。」という側面もあるのかなと思います。

BizRobo! に限った話ではないですが、広い範囲のユーザーや用途をカバーしているツールは通常、一つのことを実現するためにも複数のやり方を用意していたりします。

手軽さと機能性のトレードオフだったり、対象範囲や用途の違いだったりするのですが、ある程度使ってみないとその違いは分かりにくいものだとも思います。

今回は CSV 操作の別解として `組み込みExcel` を使ったそれを見ていきますが、まずはやり方によって何がどう違うのか、`組み込みExcel` のプロコン（:thumbsup: / :no_good:）も含めて見てみましょう。

| 機能 |評価| `組み込みExcel`<br/>（可否：〇/×） | DA で Excel<br/>（可否：〇/×） | CSV読込機能<br/>（可否：〇/×） |
|:-:|:-:|:-:|:-:|:-:|
| CSV読込 |:thumbsup:＿| 〇  | 〇  |〇|
| CSV編集 |:thumbsup:＿| 〇  | 〇  |×|
| CSV保存  |:thumbsup:＿| 〇  | 〇  |×|
| 検索  |:thumbsup:＿| 〇  | 〇  | ×|
| サーバで実行  |:thumbsup:＿| 〇  | ×  | 〇|
| 端末で実行  |:thumbsup:＿| 〇  | 〇  | ×|
| 端末でバックグラウンド実行  |:thumbsup:＿| 〇[^5]  | ×  | ×|
| バージョン安定性  |:thumbsup:＿| 〇  | ×[^4]  | 〇|
| xlsx保存  |＿:no_good:| ×[^1]  | 〇  | ×|
| 文字コード指定  |＿:no_good:| ×[^2]  | 〇  | 〇|
| 自動データ変換  |＿:no_good:| 〇[^3] | 〇  | ×|

[^1]: CSV を読みこんだ場合、同じく CSV ファイルとして上書き保存したり、別名で保存することはできますが、ファイル形式を変更して保存しなおすことは、v11.3 時点ではできません。

[^2]: オリジナルCSVファイルのエンコーディングでデータが読み込まれますが、Excelの場合 Shift_JIS で内部処理されているためか、UTF-8形式（BOM無し） の CSVは文字化けします。ネイティブの Excel であっても、CSVファイルを直接開いた場合には同じ現象になるため、`データの取得` 機能を使って文字コード指定をしたうえで読み込む必要があります。（そして `組み込みExcel` には、まだその機能が実装されていません。）

[^3]: 悪名高い、「勝手に "001"（文字列）を "1"（数値）に変換してしまう。余計なことしやがって！」というやつです。

[^4]: CSVファイルを読み込む Excel アプリケーションや、実行する OS のバージョンの違い、ディスプレイの解像度などにより画面の認識精度に違いが生じる場合がある。

[^5]: DAS を通じて端末側のExcelを使いながら、画面表示せず Excel をバックグラウンドで実行することが可能。（v11.3より可能）

基本的に `組み込みExcel` はその名前の通り Excel なのですが、Excel のAPIを通じて BizRobo! の内部にUIを表現しています。それゆえに機能性のポテンシャルは Excel と同等ですが、インターフェイスとして実装されていないものについては利用することができません。

一方で Excel 自体を操作するのと異なり、バージョンによる UI の違いからロボットがエラーを出すとか、環境によりレイアウトや操作性が異なるといったリスクを排除し、安定した動作を期待することができます。

## `組み込みExcel` を使った CSV の操作方法

さて、実際に使ってみましょう。
と言っても特別なことは何もなく、「Excel」ステップの `ワークシートのパス` に、CSVファイルのファイルパスを指定して実行するだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/8f311dcd-4faf-330b-78e0-1e77a37ce52f.png)
読みこんでいるのは CSV ファイルですが、動いているのは `組み込みExcel` のプログラム上なので、読みこまれたセルに対して以下のような（データを"テーブル"形式に変換） Excel の命令を実行することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/14446b24-697c-3bda-16b5-900ced5d29cb.png)
またセルに対するのと同様に、Design Studio 内に表示されているタブから「アプリケーション」レベルの命令も実行することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/f6661f2e-4c0e-e5fb-192a-c16d254bf4f0.png)
以下のようにキーワードを指定してファイル中を検索し、特定のセル位置にジャンプすることもできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/e7702f8b-9be9-fc1e-50b9-54f24efaee54.png)
その他、上のマトリックスにまとめた通りですが、CSVファイルの編集や書き出しなども Excel に対するのと同じ感覚で実施できるので、「制約」はあるものの、CSVに対する操作の幅を大きく広げてくれる方法かなと思います。

:::note
直接開いて文字化けしないのは `Shift_JIS` の CSV、というのは一見大きな「制約」のようにも思えますが、Excel自体の仕様なので、それを前提としたCSVファイルというのが世の中には結構あります。

例えば、[e-Stat](https://www.e-stat.go.jp/) や [e-gov](https://data.e-gov.go.jp/info/ja) などでダウンロードできるガバメント系の CSV は、Excel で編集されることを見越してか、しっかり `Shift_JIS` で生成されております。（いいことか、悪いことかはわかりませんが）

なので、こういったデータをダウンロードしてきて編集するような業務であれば、文字コードを気にする必要はないですね。（自動データ変換は別ですが。）
:::

:::note
2023-06-21 追記 【教えていただきありがとうございました！】
`UTF-8` のCSVでも `BOM付きのUTF-8` であれば `Shift_JIS` と同様に Excel 及び Built-in-Excel で文字化けせずに読みこむことができました。
:::

## まとめ

とりあえず、試してみるとできるものです。