戻る
■ 楽天から図書情報を取得する 2011/9/9 22:00
参考URL futadaさんのdiary: http://d.hatena.ne.jp/futada/20100210/1265786012
続・Excel VBAで楽天ブックス書籍検索API(ISBN→書籍名)
手順 1 楽天会員になる。
2 楽天WEBサービス デベロッパーIDを調べる。
3 「図書データ取得from楽天.xls」(excel97〜2003形式)を開いて、デベロッパーIDとISBNコードを入力すると、
図書名、著者、出版社名が取得できる。
注)当然、楽天データベースにないものは表示されない。
注)ISBN入力行を増やすことは、表示させる関数式のセルも増えることであり、関数式が増えれば、楽天へのアクセスが増えることであり
楽天では過度なアクセスがあった場合は一時的にアクセスを停止するようだ。どれほどのアクセスが過度かどうかは不明。
5件のISBNが入力できるようになっているが、すべて入力して計算=楽天へのアクセス=すると過度にあたるかどうかも不明。
自己責任で使用してください。
[図書データ取得from楽天.xls] Functionシート
B1には、楽天デベロッパーIDを入力する。
上の図では、B1セルが空欄のままで書名や著者名が表示されているが、B1セルにIDを入力しないと本来表示されないが、
サンプルとして表示結果を載せている。
B4〜D8のセル範囲に、マクロfunction関数が入力されている。
futadaさんのソースを一部修正。あとは、流用して、著者・出版社表示させるようにした。
Function getTitleFromISBN(developerID As
String, ISBN As String) As String Dim xml, result As Object Dim url, status As String url = "http://api.rakuten.co.jp/rws/3.0/rest?" '2011/9/9変更 url = url & "developerId=" & developerID url = url & "&operation=BooksBookSearch" url = url & "&version=2011-07-07" '2011/9/9変更 url = url & "&isbn=" & ISBN Set xml = CreateObject("Microsoft.XMLDOM") xml.async = False xml.Load (url) status = xml.SelectSingleNode("/Response/header:Header/Status").nodeTypedValue If (status <> "Success") Then getTitleFromISBN = status Exit Function End If Set result = xml.SelectSingleNode("/Response/Body/booksBookSearch:BooksBookSearch/Items/Item") getTitleFromISBN = result.SelectSingleNode("title").nodeTypedValue End Function ' ↓著者名の表示 Function getTitleFromISBN2(developerID As String, ISBN As String) As String Dim xml, result As Object Dim url, status As String url = "http://api.rakuten.co.jp/rws/3.0/rest?" '2011/9/9変更 url = url & "developerId=" & developerID url = url & "&operation=BooksBookSearch" url = url & "&version=2011-07-07" '2011/9/9変更 url = url & "&isbn=" & ISBN Set xml = CreateObject("Microsoft.XMLDOM") xml.async = False xml.Load (url) status = xml.SelectSingleNode("/Response/header:Header/Status").nodeTypedValue If (status <> "Success") Then getTitleFromISBN2 = status Exit Function End If Set result = xml.SelectSingleNode("/Response/Body/booksBookSearch:BooksBookSearch/Items/Item") getTitleFromISBN2 = result.SelectSingleNode("author").nodeTypedValue End Function |
[図書データ取得from楽天.xls] SUBシート
Functionシートと違って、SubシートはISBN番号を入力後「isbn取得」ボタンクリックで、データを取得します。
VBAソース。
Sub GetFromISBN() 'developerID As String,
ISBN As String) As String Dim xml, result As Object Dim url, status As String Dim Taitoru, Sakusya, Syuppansya, Komento As String Dim ISBN, developerID As String Dim i, j As Long developerID = ActiveSheet.Range("b1").Value Range("b4:e8").ClearContents For i = 4 To 8 ISBN = Range("a" & i).Value url = "http://api.rakuten.co.jp/rws/3.0/rest?" '変更 url = url & "developerId=" & developerID url = url & "&operation=BooksBookSearch" url = url & "&version=2011-07-07" ' 変更 url = url & "&isbn=" & ISBN Set xml = CreateObject("Microsoft.XMLDOM") xml.async = False xml.Load (url) status = xml.SelectSingleNode("/Response/header:Header/Status").nodeTypedValue If (status <> "Success") Then ' getTitleFromISBN = status MsgBox "楽天WEBデータベースに接続できませんでした。" 'Exit sub GoTo tugihe End If Set result = xml.SelectSingleNode("/Response/Body/booksBookSearch:BooksBookSearch/Items/Item") Taitoru = result.SelectSingleNode("title").nodeTypedValue Sakusya = result.SelectSingleNode("author").nodeTypedValue Syuppansya = result.SelectSingleNode("publisherName").nodeTypedValue Komento = result.SelectSingleNode("itemCaption").nodeTypedValue Range("b" & i) = Taitoru Range("c" & i) = Sakusya Range("d" & i) = Syuppansya Range("e" & i) = Komento tugihe: Next i End Sub |
その他の項目やCD/DVDなどの検索については、下記を参照のこと。
楽天ブックス書籍検索API (version:2011-07-07)
http://webservice.rakuten.co.jp/api/booksbooksearch/#INDEX01
ダウンロード: 図書データ取得from楽天.xls (tosyo_data_from_rakuten.zip)
戻 る