Microsoft Access 2013で、RESTベースのAPI( 具体的にはこのAPI )によって提供されるデータへのリアルタイムリンクを作成しようとしています。最終的な目標は、データをローカルデータベースであるかのようにクエリで使用できるようにすることです。
これはどのように達成できますか?具体的には、リクエストに応じてAccessにAPIを呼び出させる方法に苦労しています。同様の結果を達成するために私が考えることができる唯一の方法は、APIを介してデータベース全体をプルし、Accessで読み取り可能な形式に変換するスクリプトを作成し、そのスクリプトを設定された間隔で実行することです。しかし、データベースをローカルにキャッシュするよりも遅い場合でも、リアルタイムで機能するソリューションを見つけたいと思っています。
RESTful Webサービスの呼び出しは、実際には特定の種類のHTTP要求であるため、少なくともMicrosoft XMLライブラリを使用してWebサービスへのHTTP要求を送信し、返されるものをすべて解析できます。たとえば、次のVBAコードを実行すると
' VBA project Reference required:
' Microsoft XML, v3.0
Dim httpReq As New MSXML2.ServerXMLHTTP
httpReq.Open "GET", "http://whois.arin.net/rest/poc/KOSTE-ARIN", False
httpReq.send
Dim response As String
response = httpReq.responseText
Debug.Print response
文字列変数response
には、リクエストに対するXML応答が含まれています。これは次のようになります(読みやすさのために再フォーマットした後):
<?xml version='1.0'?>
<?xml-stylesheet type='text/xsl' href='http://whois.arin.net/xsl/website.xsl' ?>
<poc xmlns="http://www.arin.net/whoisrws/core/v1" xmlns:ns2="http://www.arin.net/whoisrws/rdns/v1"
xmlns:ns3="http://www.arin.net/whoisrws/netref/v2" termsOfUse="https://www.arin.net/whois_tou.html"
inaccuracyReportUrl="http://www.arin.net/public/whoisinaccuracy/index.xhtml">
<registrationDate>2009-10-02T11:54:45-04:00</registrationDate>
<ref>http://whois.arin.net/rest/poc/KOSTE-ARIN</ref>
<city>Chantilly</city>
<companyName>ARIN</companyName>
<iso3166-1>
<code2>US</code2>
<code3>USA</code3>
<name>UNITED STATES</name>
<e164>1</e164>
</iso3166-1>
<firstName>Mark</firstName>
<handle>KOSTE-ARIN</handle>
<lastName>Kosters</lastName>
<emails>
<email>[email protected]</email>
<email>[email protected]</email>
</emails>
<resources termsOfUse="https://www.arin.net/whois_tou.html"
inaccuracyReportUrl="http://www.arin.net/public/whoisinaccuracy/index.xhtml">
<limitExceeded limit="256">false</limitExceeded>
</resources>
<phones>
<phone>
<number>+ 1-703-227-9870</number>
<type>
<description>Office</description>
<code>O</code>
</type>
</phone>
</phones>
<postalCode>20151</postalCode>
<comment>
<line number="0">I'm really MAK21-ARIN</line>
</comment>
<iso3166-2>VA</iso3166-2>
<streetAddress>
<line number="0">3635 Concorde Parkway</line>
</streetAddress>
<updateDate>2015-05-26T11:36:55-04:00</updateDate>
</poc>
Webサービスによって返されるものは、多少異なる場合があります。または、上記のARIN whois RWSの場合のように、選択できるデータ形式がいくつかある場合があります。 XMLは単なるデフォルトでした。を使用してプレーンテキストの応答を要求することもできます
httpReq.Open "GET", "http://whois.arin.net/rest/poc/KOSTE-ARIN.txt", False
この場合、response
には
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#
Name: Kosters, Mark
Handle: KOSTE-ARIN
Company: ARIN
Address: 3635 Concorde Parkway
City: Chantilly
StateProv: VA
PostalCode: 20151
Country: US
RegDate: 2009-10-02
Updated: 2015-05-26
Comment: I'm really MAK21-ARIN
Phone: +1-703-227-9870 (Office)
Email: [email protected]
Email: [email protected]
Ref: http://whois.arin.net/rest/poc/KOSTE-ARIN
#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#