ExcelからRESTでWebにアクセスし、情報を引き出すサンプルを作ってみた

自分用のおぼえがき。

ExcelからRESTを使ってXML形式の情報を引き出し、パースして内容を表示する方法がわかったのでメモ。

ヒト遺伝子アノテーション統合データベース というサイトがあり、RESTで情報を引き出せる らしいので、ここのサンプルを移植する感じで、ExcelからRESTで情報を引き出すプログラムを作ってみた。

以下のコードをExcelシートのクラスモジュールに書き込む。

Sub Main()
    Const Url = "http://h-invitational.jp/hinv/hws/varysysdb/search/HIT000022181+hit/"
    Const NodePath = "/varysys_db/rs_number"
    
    Dim Xml As String
    Xml = GetContents(Url)
    
    Dim NodeText As Collection
    Set NodeText = GetNodeText(NodePath, Xml)
    
    ShowData NodeText
End Sub

Function GetContents(Url As String) As String
    Dim XmlHttp As Object
    Set XmlHttp = CreateObject("MSXML2.XMLHTTP")
    
    XmlHttp.Open "GET", Url, False
    XmlHttp.Send
    
    GetContents = XmlHttp.ResponseText
End Function

Function GetNodeText(NodePath As String, Xml As String) As Collection
    Set GetNodeText = New Collection
    
    Dim Dom As Object
    Set Dom = CreateObject("MSXML2.DOMDocument")
    
    If Not Dom.LoadXml(Xml) Then Exit Function
    
    Dim Nodes As Variant
    Set Nodes = Dom.DocumentElement.SelectNodes(NodePath)
    
    Dim Node As Variant
    For Each Node In Nodes
        GetNodeText.Add Node.Text
    Next
End Function

Sub ShowData(Data As Collection)
    Me.UsedRange.Clear
    
    Dim i As Integer
    i = 1
    
    Dim e As Variant
    For Each e In Data
        Me.Cells(i, 1).Value = e
        i = i + 1
    Next
End Sub

Mainを実行すると、ワークシートに次のように表示される。

表示内容の意味はわからないけど(笑)、ともかくRESTを使って取得したデーターをパースして中身を取り出すことができた。