- blogs:
- cles::blog
2020/01/20
Excel VBA で JSON が扱いたいときは VBA-JSON が便利
VB excelVBA で JSON を扱うことができる VBA-JSON が便利だったのでメモ。
VBA-tools/VBA-JSON: JSON conversion and parsing for VBA
JSON conversion and parsing for VBA (Windows and Mac Excel, Access, and other Office applications). It grew out of the excellent project vba-json, with additions and improvements made to resolve bugs and improve performance (as part of VBA-Web).
今回はサンプルとして openBD の API を叩いて、ISBN から書名、著者名、出版日、出版社名、価格を取得するコードを書いてみました。
以下のように非常にシンプルなコードで実現できます。
実行方法は適当なセルに ISBN を入力し、その範囲を選択した状態でマクロを実行するだけです。日本語も問題なく取れていますね。
Option Explicit
Sub Main()
Dim i As Long
Dim c As Range
For i = Selection(1).row To Selection(Selection.Count).row
Set c = Selection(1).Offset(i - 1, 0)
If c.Value = "" Then
Exit For
Else
Search c.Value, c
End If
Next
For i = 0 To 5
c.Offset(0, i).EntireColumn.AutoFit
Next
End Sub
Sub Search(ISBN As String, cell As Range)
If Not ISBN = "" Then
Dim jsonObj As Object
Dim Url As String
Dim Json As String
Url = "https://api.openbd.jp/v1/get?isbn=" & ISBN
Json = GetContents(Url)
Set jsonObj = JsonConverter.ParseJson(Json)
If jsonObj.Count > 0 Then
'タイトル
Dim title As String
title = jsonObj(1)("summary")("title")
cell.Offset(0, 1) = title
'著者
Dim author As String
author = jsonObj(1)("summary")("author")
cell.Offset(0, 2) = author
'出版日
Dim pubdate As String
pubdate = jsonObj(1)("summary")("pubdate")
cell.Offset(0, 3) = pubdate
' 出版社
Dim publisher As String
publisher = jsonObj(1)("summary")("publisher")
cell.Offset(0, 4) = publisher
' 価格
On Error GoTo Catch
Dim price As Integer
price = jsonObj(1)("onix")("ProductSupply")("SupplyDetail")("Price")(1)("PriceAmount")
cell.Offset(0, 5) = price
Catch:
End If
End If
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
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11494
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
- シャープの空気清浄加湿器の... (1)
- SMARTEK デジタル温湿度計 (1)
閲覧数が多いエントリ
1 . NP_TrackBack v2.x系の使い方(16593)
2 . Word で数式がグレーアウトされていて挿入できないときは(15229)
3 . awk で指定した n カラム目以降を出力する(11788)
4 . アーロンチェアのポスチャーフィットを修理(11546)
5 . Windows 10 で勝手にログアウトされないようにする(9771)
2 . Word で数式がグレーアウトされていて挿入できないときは(15229)
3 . awk で指定した n カラム目以降を出力する(11788)
4 . アーロンチェアのポスチャーフィットを修理(11546)
5 . Windows 10 で勝手にログアウトされないようにする(9771)
cles::blogについて
Referrers