【ハウツー】

Excel VBAでWebサービス - ExcelでTwitterと連携する2

1 必要な情報の格納場所などを準備する

 
  • <<
  • <

1/4

はじめに

前回は、OAuth認証を利用する方法と、Twitterのアプリを開発するための登録までを説明しました。今回は前回に続いて、Excel VBAでOAuth認証を実装する方法を説明します。 動作確認は、Windows 7、Excel 2010、VBA 7.0およびWindows XP、Excel 2007、VBA 6.5で行っています。

図1.完成サンプル

Excel VBAでWebサービス - 天気予報を取得してみよう
Excel VBAでWebサービス - MSNマネーから株価の推移を取得しよう
Excel VBAでWebサービス - Excelで書籍情報を検索・取得してみよう
Excel VBAでWebサービス - YouTube APIで動画を検索しよう
Excel VBAでWebサービス - ExcelでTwitterと連携する

OAuth認証部分の開発

Excel 2010を起動した後、以下の手順で行います。

  1. 必要な情報の格納場所を準備する
  2. VBAに必要な参照設定を行う
  3. OAuth認証を行うVBAを記述する

必要な情報の格納場所などを準備する

グローバル変数のように各種情報を格納しておくため、図2のように「Sheet1」シートの右の方(サンプルではY列)に、以下の名前を定義しておきます。アプリ登録で取得したコンシューマー・キーとコンシューマー・シークレットは入力しておいてください(その他は入力不要)。

図2.各種情報の格納場所の準備

表1.必要な情報の格納場所

セルの名前定義初期値 説明
urlRequestTokenhttps://api.twitter.com/oauth/request_token リクエスト・トークンの要求先URL
urlUserAuthorizehttp://twitter.com/oauth/authorize?oauth_token= ユーザーに認証してもらうページのURL
urlAccessTokenhttps://api.twitter.com/oauth/access_token アクセス・トークンの要求先URL
urlTweethttp://api.twitter.com/1/statuses/update.xml ツイートの投稿先URL
urlTimelinehttp://api.twitter.com/1/statuses/home_timeline.xml タイムラインの取得先URL
consumer_key取得したコンシューマー・キーを入力
consumer_secret取得したコンシューマー・シークレットを入力
request_token不要 取得するリクエスト・トークンを格納する
request_secret不要 取得するリクエスト・トークンの秘密鍵を格納する
pinCode不要 PINコードを格納する
access_token不要 取得するアクセス・トークンを格納する
access_secret不要 取得するアクセス・トークンの秘密鍵を格納する
OAuthStatus不要 OAuthによるHTTP通信の成否を格納する

また、[開発]タブの[挿入]ボタンをクリックし、[ActiveXコントロール]のコマンドボタンを作成します。名前は「cbAuth」、表示名は「認証する」にします(図3)。

3.認証ボタンの準備

VBAに必要な参照設定を行う

[Alt]+[F11]キーでVBエディタを開き、メニューバーから[ツール]-[参照設定]をクリックし、「Microsoft XML, v3.0」と「Microsoft Scripting Runtime」を追加してください。

図4.参照設定の追加

「Microsoft Scripting Runtime」を追加すると連想配列が使えるようになります。 連想配列とは、インデックスに数字でなく文字列を使える配列で、OAuthの引数名から引数値を直接参照できるので重宝します。

OAuthによるHTTP通信を行うVBAを記述する

OAuthによるHTTP通信を用いるフェーズには、以下の3つがあるのでした。

フェーズ1:リクエスト・トークンの要求
フェーズ2:アクセス・トークンの要求
フェーズ3:Webサービスへのアクセス

いずれのフェーズにおいても、以下の手順を踏む必要があります。

手順1.OAuth特有の引数を準備する
手順2.暗号化キーを使って電子署名を作成する
手順3.電子署名も含め、全ての引数を送信する

このため、まず上記の手順を実現する部分のプロシージャを記述します。

[リスト1]共通変数の準備

(略)
'OAuth関連の変数宣言
Dim timestamp As Long '1970年1月1日からの秒数を格納
Dim param As Scripting.Dictionary 'OAuth引数用の連想配列
Dim xmlhttp As MSXML2.xmlhttp 'HTTP通信用オブジェクトを格納
(略)

これらの変数は、手順1~3で共有しますので、プロシージャの外でグローバルに宣言しています。変数の役割は表2に示す通りです。

表2.グローバル変数の役割

変数名役割
timestamp1970年1月1日からの秒数を格納。HTTP通信を行うごとに増加する値を設定する必要あり。
paramOAuth特有の引数を格納する連想配列。
xmlhttpOAuthによるHTTP通信を行うオブジェクトを格納する変数。
  • <<
  • <

1/4

インデックス

目次
(1) 必要な情報の格納場所などを準備する
(2) OAuth特有の引数を準備するVBA
(3) 暗号化キーを使って電子署名を作成するVBA
(4) OAuth認証を行うVBAを記述する
関連キーワード

人気記事

一覧

新着記事

G-Tune、GeForce GTX搭載ゲーミングPCと28型4K-UHD液晶のセットモデル
[11:00 9/27] パソコン
家計管理のコツは手抜き!? FP風呂内亜矢さんが教える家計簿の基本
[11:00 9/27] マネー
Hot Chips 28-哲学者の名を冠したDeephiのニューラルネットアクセラレータ
[11:00 9/27] テクノロジー
絶対役立つダイソーの100均衣替えグッズ - おろす服もしまう服もカバー!
[11:00 9/27] ライフスタイル
夢にチャレンジ 第2回 黒田総裁も注目。東大発Fintechベンチャーがビッグデータで金融市場を変える
[11:00 9/27] 企業IT