操作画面用のオブジェクトを設定する

1行目の高さを広げ、以下のオブジェクトを配置します。

表6.操作のためのオブジェクト

種別 名前 目的 プロパティ設定
コマンドボタン cbHome ニュースフィードを表示させる Caption:(下図参照)
テキストボックス txPost 投稿、コメントを入力 MultiLine:True
ラベル Labal1 操作説明表示 Caption:(下図参照)
コマンドボタン cbPost ウォールへ投稿する Caption:(下図参照)

下図のような準備ができればOKです。

図10.操作画面

HTTP送信を行うVBAを記述する

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

図11.参照設定

各種リクエストを共通に処理するユーザ定義関数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変数に追加します。