Blue Prism側のコレクションデータをExcelにドロップダウンリストとして貼り付ける方法を解説します。ポイントはRun Macroへ引数を渡す方法とExcel側のマクロです。
今回は、Yahoo!路線情報にて、検索結果の「出発地/到着地候補」のリストをExcelに貼り付けることにします。
方法
「出発地/到着地候補」のリストを取得する
「読み取り」ステージを使って、「出発地/到着地候補」のリストを取得します。
リストはコレクション変数に格納されます。
コレクションをカンマ区切りの文字列に変換する
コレクションをループで回し、テキスト型の変数にカンマ区切りで連結していきます。
例えば、「赤坂(東京都)駅,赤坂(福岡県)駅,赤坂(山梨県)駅,…」といった具合です。
末尾のカンマは除外しておきます。
MS Excel VBOを拡張する
既存のオブジェクトである「MS Excel VBO」の「Run Macro」では、先ほどのプロシージャに引数を渡せないので、「Run Macro」を拡張することにします。
拡張する際は、ベースの「MS Excel VBO」をコピーして別オブジェクト「MS Excel VBO – extend」を用意します。
その後、「Run Macro」をコピーし、「マクロ実行(引数あり)」ページを作成します。
ページ名を日本語にしているのは、拡張したページであることを分かりやすくするためです。
ブサイクなコードですが、今回はこれで良しとします(笑)
プロシージャに引数を最大3つまで渡せるようにします。
If arg1.Length <> 0 Then
If arg2.Length <> 0 Then
If arg3.Length <> 0 Then
GetInstance(Handle).Run(Macro_Name, arg1, arg2, arg3)
Else
GetInstance(Handle).Run(Macro_Name, arg1, arg2)
End If
Else
GetInstance(Handle).Run(Macro_Name, arg1)
End If
Else
GetInstance(Handle).Run(Macro_Name)
End If
入力パラメータを追加することを忘れずに。
Excelマクロを作る
ドロップダウンを作る&消すモジュールを作っておきます。
Option Explicit
Sub CreateDropDown(ByVal rng, ByVal list)
Dim sheet As Worksheet
Set sheet = Worksheets(1)
With sheet.Range(rng).Validation
.Delete
.Add _
Type:=xlValidateList, _
Formula1:=list
End With
End Sub
Sub DeleteDropDown(ByVal rng)
Dim sheet As Worksheet
Set sheet = Worksheets(1)
With sheet.Range(rng).Validation
.Delete
End With
End Sub
マクロをキックするステージを用意する
アクションステージにて、「MS Excel VBO – extend」オブジェクトから「マクロ実行(引数あり)」を呼び出します。
入力パラメータは図のように設定します。
Macro Name:”CreateDropDown”
引数1:ドロップダウンを作るセル位置
引数2:経路候補リスト
実行結果
指定したセル位置に、出発地/到着地候補リストのドロップボックスができます。