Office関連

RESAS-APIをVBAから呼び出す方法

下記記事の通り「地域経済分析システム RESAS」のAPIが公開されたので、さっそくVBAから使ってみました。

内閣官房 まち・ひと・しごと創生本部事務局と内閣府 地方創生推進室は、地域経済分析システム「RESAS(リーサス)」のAPI(RESAS-API)を11月1日に公開した。登録を行えば、誰でも無料で利用できる。

https://codezine.jp/article/detail/9792 より

APIの利用登録

RESAS-APIを使うには、まず利用登録をする必要があります。

  1. https://opendata.resas-portal.go.jp/ にアクセスし、「RESAS-API利用登録(無料)」をクリックします。
  2. resas-api_01_01

  3. RESAS-API利用登録画面が表示されたら、メールアドレスや氏名、利用目的といった必要事項を入力し、「入力内容確認」ボタンをクリックします。
  4. resas-api_01_02

    登録画面は黒背景でカッコイイのですが、プルダウン項目が非常に見づらかったです(Firefox利用)。

  5. 入力したメールアドレス宛に、すぐに利用登録仮完了の案内メールが届きます。私が登録したときはメールが“迷惑メール”として引っ掛かってしまったので、このメールが届かない方は一度迷惑メールフォルダを確認してみてください。
  6. resas-api_01_03

  7. 利用登録仮完了の案内メールに記載されたURLを開き、登録を完了します。
  8. resas-api_01_04

  9. 無事に利用登録が完了すると、画面にAPIキーが表示されます。このAPIキーはメールで送られてこないので、忘れずにコピーしておきましょう。
  10. resas-api_01_05

APIの利用方法

APIの利用方法は下記Webページに詳しく記載されています。

エンドポイント(https://opendata.resas-portal.go.jp)にGETでリクエストを投げるだけなので、非常に使いやすいです(レスポンスはJSON形式)。

注意点としては、リクエストを投げる際にヘッダー「X-API-KEY」(値は上記手順で取得したAPIキー)を付けることです。
これがないと403エラーが返ってきてしまいます。

RESAS-APIを呼び出すVBAコード

というわけで、さっそくVBAマクロからAPIを呼び出してみたいと思います。

※ 下記コードはScriptControlを利用しているため、64ビット版のOfficeでは動作しません。

Option Explicit

Public Sub Sample()
'RESAS-APIを使って都道府県一覧を取得
  Dim url As String
  Dim jso As Object
  Dim result As Object
  Dim itm As Object
  Const api_key As String = "(取得したAPIキー)"
  
  url = "https://opendata.resas-portal.go.jp/api/v1-rc.1/prefectures"
  Set jso = GetResasResponse(url, api_key)
  If Not jso Is Nothing Then
    On Error Resume Next
    Set result = VBA.CallByName(jso, "result", VbGet)
    On Error GoTo 0
    If Not result Is Nothing Then
      For Each itm In result
        Debug.Print "都道府県コード:" & VBA.CallByName(itm, "prefCode", VbGet) & vbTab & _
                    "都道府県名:" & VBA.CallByName(itm, "prefName", VbGet)
      Next
    End If
  End If
End Sub

Private Function GetResasResponse(ByVal url As String, _
                                  ByVal api_key As String) As Object
  Dim js As String
  Dim jso As Object
  
  On Error Resume Next
  With CreateObject("WinHttp.WinHttpRequest.5.1")
    .Open "GET", url, False
    .SetRequestHeader "X-API-KEY", api_key
    .Send
    If .Status = 200 Then
      js = "(" & .ResponseText & ")"
      With CreateObject("ScriptControl")
        .Language = "JScript"
        Set jso = .CodeObject.eval(js)
        Select Case Left(VBA.CallByName(jso, "statusCode", VbGet), 1)
          Case "4", "5" '4xx Client Error, 5xx Server Error判定
            MsgBox js, vbExclamation + vbSystemModal, "Error"
            Exit Function
        End Select
      End With
    End If
  End With
  On Error GoTo 0
  Set GetResasResponse = jso
End Function

上記コードを実行すると、問題なくAPIの呼び出しが行われれば、下図のように都道府県の一覧がイミディエイト ウィンドウに出力されます。

resas-api_01_06

上記は単に都道府県名を取得しただけですが、「API一覧」を見る限り、特許一覧や人口ピラミッドなど、かなりの情報を取得することができるようです。

RESASで何ができるか、分かりやすく解説されたマンガ(下記)もあるので、興味がある方はご参照ください。

RESASまんがブックレット「そうだったのか!RESASでわかる私たちの地域」 – まち・ひと・しごと創生本部
http://www.kantei.go.jp/jp/singi/sousei/resas/information/index_manga_booklet.html

【感想】なんと染め抜く前のページ

ジャパンバードフェスティバル2016に行ってきたよ。次のページ

関連記事

  1. Office関連

    Office 2016のコントロールIDリストが公開されました。

    昨年の秋にリリースされたOffice 2016。そのコントロールI…

  2. Office関連

    すべてのテーブルの結合を解除するWordマクロ

    すべてのテーブルのセル結合を解除するWordマクロを考えてみました(W…

  3. Office アドイン

    YO OFFICE(Yeoman)を使ってOffice アドインのひな型を作成する方法

    Webアプリのひな型を一発で作ってくれる便利ツール「Yeoman」には…

  4. Office関連

    指定したファイルをエクスプローラーで開いて選択するVBAマクロ

    マクロから直接ファイルを開くこともできるけどファイルの操作はユーザーに…

  5. アイコン一覧

    Office 2013 アイコン一覧(U)

    ・Office 2013 アイコン一覧 NUM…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP