操作画面用のオブジェクトを設定する
1行目の高さを広げ、以下のオブジェクトを配置します。
表6.操作のためのオブジェクト
種別 | 名前 | 目的 | プロパティ設定 |
---|---|---|---|
コマンドボタン | cbHome | ニュースフィードを表示させる | Caption:(下図参照) |
テキストボックス | txPost | 投稿、コメントを入力 | MultiLine:True |
ラベル | Labal1 | 操作説明表示 | Caption:(下図参照) |
コマンドボタン | cbPost | ウォールへ投稿する | Caption:(下図参照) |
下図のような準備ができればOKです。
HTTP送信を行うVBAを記述する
[Alt]+[F11]キーでVBエディタを開き、メニューバーの[ツール]-[参照設定]から、「Microsoft XML, v3.0」と「Microsoft Script Control 1.0」の参照設定を追加しておいてください。
各種リクエストを共通に処理するユーザ定義関数SendHttpを記述します。
表7.SendHttp関数の仮引数と戻り値
名前 | 種別 | 目的 | 設定 |
---|---|---|---|
httpMethod | 仮引数 | メソッド種別の指定 | 呼び出し側で設定(POSTまたはGET) |
URL | 仮引数 | リクエスト送信先のURL | 呼び出し側で設定 |
data | 仮引数(参照型) | 入力文字を受け取る(POSTの場合)、取得データを返す(GETの場合) | 呼び出し側で設定(POSTの場合)、responseTextを設定(GETの場合) |
SendHttp | 戻り値 | リクエストの成否を返す | statusTextを設定 |
[リスト1]SendHttp関数
Private Function SendHttp(ByVal httpMethod As String, ByVal URL As String, ByRef data As String)
Dim xmlhttp As New MSXML2.xmlhttp 'HTTP通信用オブジェクトの生成
Dim status As String
xmlhttp.Open httpMethod, URL, False '非同期で送信
'(1)リクエストの送信
xmlhttp.send (UrlEncode(data))
status = xmlhttp.statusText 'リクエスト成否の状態を取得
If status = "OK" Then
'(2)レスポンスの取得
If httpMethod = "GET" Then
data = xmlhttp.responseText
End If
Else
'(3)エラー詳細の取得
status = status & vbCrLf & xmlhttp.responseText
End If
Set xmlhttp = Nothing 'HTTP通信用オブジェクトの解放
SendHttp = status
End Function
(1)投稿やコメントがあれば、data仮引数で渡されますので、これをURLエンコードして送信します。 (2)GETメソッドの場合、ニュースフィード画面に表示されるjson形式データが返ってきますので、これをdata仮引数(参照型)に設定すれば、呼び出し側にデータを返すことが可能です。
表8.ユーザ定義関数の仮引数の種別
種別 | 記述方法 | 受け取り方 | 内部で変更した場合の外側の変数の値 |
---|---|---|---|
値型 | ByVal 変数 As データ型 | 変数の値として | 変更されない |
参照型 | ByRef 変数 As データ型 | 変数のアドレスとして | 変更される |
(3)結果が失敗の場合も、詳細情報が返ってきますので、これをstatus変数に追加します。