【ChatGPT x UiPath】コピペもVBAもAPI登録も不要！超絶簡単にExcelからChatGPTを使って住所を市区町村などに分割する

時は2023年 ChatGPTがブームの真っただ中でございますが、類にも漏れずChatGPTにハマっている @Manabutech です。

私はとうとう見つけてしまいました、ExcelからChatGPTを超絶簡単に呼び出す方法を。
しかもChatGPTをExcelから呼び出す方法はExcel関数もVBAも出てきません。
ましてや、OpenAIのAPI登録もいりません。

必要なのはExcelとUiPath StudioというRPAツールだけです。
![Snapshot_105.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/f1e5ccf0-7426-63fe-6db0-f32245ba02c5.png)

## ChatGPTがExcelと連携できたら何がうれしいの？

そもそもExcelでChatGPTを使いたいケースってあるのでしょうか？
ChatGPTを呼び出せれば、何ができるようになるんでしょうか？
ちょっと考えてみましょう。

### Excelでこんな作業をやってないですか？

- スペースで区切られていない住所から都道府県、市区町村、建物名に分割する
- スペースで区切られていない氏名を名字と名前に分解する
- 製品要望から製品カテゴリーに分ける
- アンケートから不満意見のみを抽出する

こんな作業ってありますよね。
まさか、手作業でやってないですよね？
それは「無駄無駄無駄無駄無駄」です。ジョルノジョバーナに怒られてしまいます。

### VBAでやろうとするとかなり難しい

「俺はVBAが分かるからこんなの余裕だよ」という人はこのように考えます

まず都道府県は神奈川、和歌山、鹿児島が3文字だからこの時だけ左から４文字抽出。
それ以外は３文字抽出したら作れるなー。

```
Sub sample1()
    Dim endRow As Long
    Dim i As Long
    endRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To endRow
        Select Case Left(Cells(i, 1).Value, 3)
            Case "神奈川", "和歌山", "鹿児島"
                Cells(i, 2).Value = Left(Cells(i, 1).Value, 4)
                Cells(i, 3).Value = Mid(Cells(i, 1).Value, 5)
            Case Else
                Cells(i, 2).Value = Left(Cells(i, 1).Value, 3)
                Cells(i, 3).Value = Mid(Cells(i, 1).Value, 4)
        End Select
    Next i
End Sub
```

VBAが出来上がりましたが、プログラミング経験が無い人からするとかなり複雑ですよね。
市区町村の分割はもっと複雑になります。
「四日市市」「市川市」など、「市」が付いている市の扱いをどうするか、新たに「市」が付く市が出てきたらどうするのか？
このような一定のルールになっていないものをVBAで処理するのは現実的ではありません。

### こんな作業はChatGPTに任せましょう

VBA難しい！覚えたくない！誰か作ってくれ！！
Excel関数を見ただけでもPCをそっと閉じたくなる人はChatGPTを使いましょう！！

「ははーん、そうか。分かったぞ。ChatGPTにVBAを作ってもらえばいいのか」と考えた人
「ちがーーーう！！」
こんなことをしていたら、スラムダンクのゴリに怒られてしまいます。
ChatGPTに住所を渡して分割してもらうんです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/8de97f81-cdc0-eeec-7bc5-d5f7a2d26fd5.png)


### でもChatGPTに毎回質問するの面倒じゃね？

ChatGPTは便利ですがこの方法だと住所を毎回質問しないといけないからコピペが面倒ですよね。
そんな時はRPAツールを使いましょう。
RPAツールを使えばどんなに大量なデータでも自動化することができます。

::: note
RPAはWebやExcelなど操作を自動化することができるツールです。
:::

「そうか、分かったぞ。RPAでExcelからChatGPTのサイトにコピペする処理を自動化するんだなー」と考えた人、違います。
「クソ違います、お客様」
こんなことをしていたらレディーの前で恥をかいてしまいます。
Excelから直接ChatGPTに質問できるツールを使いましょう。

### Excelから直接ChatGPTに質問できるツールなんてあるの？
安心してください、ありますよ。
「ユーアイパス・スタジオー（大山のぶ代 風に）」
（クリックすると、よくSNSで流れてくるショート動画風の説明動画が再生されます）
<iframe width="640" height="360" src="https://www.youtube.com/embed/nZjSYvisiz0" title="ChatGPTとRPAでVBAではできなかった処理を自動化しよう #shorts" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<br>
<br>
UiPathのRPAツール「UiPath Studio」を使えば、ExcelのデータをRPAツールから簡単に取り出せるので、簡単にChatGPTと連携させることができます。

### でも、お高いんでしょ？

でもお高いんでしょ？とお考えのあなたにビッグサプライズ！
UiPath Studioは個人利用無料で使えるCommunity版があります。
法人でもトライアルがあるので、無料で試すことができます。

これで、明日からRPAに仕事を任せて、サボれそうですね。
ちがーう！！

## Excel ChatGPT連携 デモ

前段が長くなってしまいました。
気を取り直して、ExcelからUiPathのAskGPTアクティビティを利用してVBAではできない処理を自動化するデモをご覧ください。

（クリックするとデモ動画が再生されます）
<iframe width="640" height="360" src="https://www.youtube.com/embed/bjRmQpaI0oY" title="ExcelChatGPT  Demo" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<br>
<br>
デモは４種類用意しています

- 住所の分割
- 氏名の分割
- 製品要望のカテゴリー分類
- アンケート結果の満足度判断
 
PDFファイルなど特定のファイルに対してChatGPTを利用して情報を取得する使い方が本来の使い方です。

### デモ内容

住所から都道府県・市区町村・町名番地・建物名に分解するデモの概要です。
大量データであってもRPAとChatGPTを組み合わせることによって、VBAでは不可能だった処理も自動化できます。
![Snapshot_109.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/9f92995b-4f4a-d0e0-64d8-43d4e6ad45da.png)



### デモ詳細

使用するアクティビティ（自動化のための部品）は4つだけです。
Excelを開いてセルに書き込む部品と、Ask GPTアクティビティというChatGPTに質問することができる部品を使用します。
![Snapshot_110.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/a28a024a-2c76-c26b-e8e3-338c88e2ab35.png)

ちなみに、デモサンプルはChatGPTさんに手伝ってもらいました。
サンプル生成はChatGPTさんの得意領域ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/dbbfff7e-90c8-72e8-0e15-b8beae9daf9b.png)

### AskGPTアクティビティについて

AskGPTアクティビティは[UiPathマーケットプレース](https://marketplace.uipath.com/listings/internallabsopenaiactivities)で公開されているInternalLabs.GPT.Activitiesパッケージをインストールすると使えるようになります。
UiPathにはファイルからテキストを読み取る色々な方法が用意されているので、簡単にテキスト情報を取得できます。
取得したテキストと質問をAskGPTに設定するとChatGPTが回答を返してくれます。
![Snapshot_113.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/5f302c7e-7283-e2a2-9f91-549692515abf.png)

::: note info
UiPath AskGPTアクティビティはAzure上に構築されたOpenAIリソースを利用しています。
OpenAIに情報が送信されないため、自動化で使用したテキスト情報が再学習に使用されるリスクはありません。
:::

::: note warn
InternalLabs.GPT.Activitiesは公式にサポートされているものではありませんのでご注意ください。現在、デモやPoCなどに無料で利用することができます。将来的にUiPath公式のアクティビティに統合される予定です。
:::

## 自動化処理の作り方

今回のデモ内容であれば、4つの部品をドラッグ＆ドロップで組み合わせるだけで簡単に作ることができます。
飲食店アンケートからの満足度判定は、このような処理になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2577004/5b11f4d5-e943-9426-9d9b-f173812b5805.png)


UiPathを導入していない方は、こちらにトライアルの情報が詳しく乗っているため、ご覧ください。

https://qiita.com/MUCHIUCHI_OJISAN/items/c37f16eaeb08dfbc7a7d

今回のワークフローは簡単なので、こちらの動画を見ていただけたら簡単に作れると思います。
（クリックすると動画が再生されます）

::: note warn
InternalLabs.OpenAI.ActivitiesはInternalLabs.GPT.Activitiesという名称になりました。動画内ではInternalLabs.OpenAI.Activitiesとなっていますのでご注意ください。
:::

<iframe width="640" height="360" src="https://www.youtube.com/embed/_sbfMtEfyZs" title="ExcelからUiPathのAskGPTアクティビティを利用してVBAではできない処理を自動化するワークフローの作り方" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

ワークフローは[Github](https://github.com/manabutech-kyushu/uipath-excel-gpt)に公開しています。(サンプル.xlsxもこちらからダウンロードできます)

::: note
Googleスプレッドシートでも同じようにAskGPTアクティビティを使用することができますが、セルの情報を取得するアクティビティが異なり少し複雑になります。
:::

### ChatGPTへの質問

今回のワークフロー作成で一番苦労した点はChatGPTに質問するところです。

**住所録**
|ChatGPTへの質問|結果|備考|
|---|---|---|
|都道府県は？|:o:||
|市区町村は？|:small_red_triangle:|京都市が正しく取れていなかった|
|町名番地は？|:o:|漢数字、算用数字も分割可能|
|建物名は？|:small_red_triangle:|部屋番号が消えてしまった|

**従業員名簿**
|ChatGPTへの質問|結果|備考|
|---|---|---|
|姓は？|:o:||
|名は？|:o:||
|性別は？|:x:|表示されない|
|ニックネームは？|:x:|表示されない|
|与えられた名前から想定される性別は？男か女かで答えてください|:o:|由紀を男として表示する。女だろ|
|与えられた名前に対して面白いニックネームを付けてください|:o:|おもしろいかは不明...|

**製品への要望**
|ChatGPTへの質問|結果|備考|
|---|---|---|
|製品カテゴリーは？|:x:|正しく分類できない|
|与えられた製品への要望から、該当する製品を分類してください。ただし製品はペン、机、プリンタ、筆箱、消しゴムのいずれかとします|:small_red_triangle:|指定していない分類がある|

**飲食店アンケート**
|ChatGPTへの質問|結果|備考|
|---|---|---|
|満足か不満のどちらか判断してください|:o:||


## 最後に

ChatGPTを利用することで、今までVBAではできなかったことを実現できました。
RPAを使えば大量データも処理できるので、データベースの名寄せなどに使用できるのではないでしょうか。

Excel関数もVBAも明示的に何をしたいか指定したい場合にはChatGPTよりも使えますので、今後無くなりはしないと思います。
ChatGPTは便利ですが、質問の仕方が難しいのでやはりプロンプト技術者のニーズも今後高まってくるのだと再認識しました。

今回使用したAsk GPTアクティビティは公式では無く開発チームが公開しているものです。
公式でChatGPT連携部品が開発されています。まずはこちらの部品でChatGPTとRPAを連携した時の威力を感じていただければ幸いです。

励みになりますので、内容が面白かった人はいいね・フォローお願いします！

同じAsk GPTアクティビティを使って、特定の文書に対して質問するロボットを作りましたので
興味があれば、こちらもご覧ください。（本来の正しい使い方）

https://qiita.com/ManabuTech/items/69dcace5e7af0aeaead6