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関連

    「クラシックスタイルメニュー for Office 2010」のOffice 2013対応状況

    私が下記ページで公開しているフリーソフト「クラシックスタイルメニュー …

  2. Excel

    Yahoo!翻訳で文字列を翻訳するマクロ

    「Google翻訳で文字列を翻訳するマクロ」ではGoogle翻訳を利用…

  3. Office関連

    Visio Onlineで図の作成・編集ができるようになりました。

    しばらくVisio Onlineを使っていなかったので気が付かなかった…

  4. Office関連

    表示モードを変更するPowerPointマクロ

    PowerPointには様々な表示モードがありますが、私のお気に入りは…

  5. アイコン一覧

    Office 365アイコン(imageMso)一覧(G)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  6. Office アドイン

    [Office用アプリ]法人登録する際の参考資料

    法人としてMicrosoft Seller DashboardでOff…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP