【BluePrism】Yahoo!路線検索の経路候補リストをExcelに貼り付ける


概要

Yahoo!路線情報にて、検索結果の「出発地/到着地候補」のリストをExcelに貼り付ける方法です。

image.png


方法


「出発地/到着地候補」のリストを取得する

「読み取り」ステージを使って、「出発地/到着地候補」のリストを取得します。

リストはコレクション変数に格納されます。

image.png


コレクションをカンマ区切りの文字列に変換する

コレクションをループで回し、テキスト型の変数にカンマ区切りで連結していきます。

例えば、「赤坂(東京都)駅,赤坂(福岡県)駅,赤坂(山梨県)駅,…」といった具合です。

image.png

image.png

末尾のカンマは除外しておきます。

image.png


MS Excel VBOを拡張する

既存のオブジェクトである「MS Excel VBO」の「Run Macro」では、先ほどのプロシージャに引数を渡せないので、「Run Macro」を拡張することにします。

拡張する際は、ベースの「MS Excel VBO」をコピーして別オブジェクト「MS Excel VBO - extend」を用意します。

その後、「Run Macro」をコピーし、「マクロ実行(引数あり)」ページを作成します。

ページ名を日本語にしているのは、拡張したページであることを分かりやすくするためです。

image.png

ブサイクなコードですが、今回はこれで良しとしますw

プロシージャに引数を最大3つまで渡せるようにします。

image.png

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

入力パラメータを追加することを忘れずに。

image.png


Excelマクロを作る

ドロップダウンを作る&消すプロシージャを作っておきます。

image.png

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:経路候補リスト

image.png


実行結果

指定したセル位置に、出発地/到着地候補リストのドロップボックスができます。

image.png