3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

Excel VBAからインターネット上のホームページにPostする

2010年10月22日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

たまには、Excelマクロでのコーディングの話を。

以前、「メール配信システムが障害続きなのでメール配信システムを変えたくて仕方がない」ということをブログで書いた。

http://www.exvba.com/blog/?p=1891

で、新規にメール配信システムを導入したのだが。

ついでに、Excelで作った顧客データベースに新規に受講生が登録された段階で、ネット上にあるメール配信システムに自動的にその受講生の方へのメール配信が開始されるような仕組みを作った。

以下は、そのサンプルコード。

小川が自分でネット上で情報を探した際、サンプルコードと関連リンクが全部書かれているページが見つからなくて多少手こずったので、あとで同じようなことをする人のために書いておく。

Sub PostForm(sP1 As String, sP2 As String, sP3 As String, sP4 As String, url As String)

‘指定されたURLにPostを行う

‘文字コードはSHIFT-JIS。というか、システムのデフォルトがSHIFT-JISという想定で作成

‘その場合、パラメータは Byte 型配列にして渡す必要あり。

‘参考URL:

http://office.microsoft.com/ja-jp/access/HA012289151041.aspx

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200501/200501_05010059.html

Dim xmlhttp As Object

Set xmlhttp = CreateObject("msxml2.xmlhttp")

Dim sParam As String

Dim sPm1 As String

Dim sPm2 As String

Dim sPm3 As String

Dim sPm4 As String

sPm1 = "&myparam1=" & sP1

sPm2 = "&myparam2=" & sP2

sPm3 = "&myparam3=" & sP3

sPm4 = "&myparam4=" & sP4

sParam = sParam & sPm1 & sPm2 & sPm3 & sPm4

xmlhttp.Open "POST", url, False

xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

Dim bPmary() As Byte

bPmary = StrConv(sParam, vbFromUnicode) ‘ここで、文字列をByte型の文字列に変換

xmlhttp.send (bPmary)

Dim sCode As String

sCode = xmlhttp.Status

If sCode <> 200 Then ‘サーバからのレスポンスコードをチェック

MsgBox "サーバから200以外のレスポンスコードが返りました" & vbNewLine & sCode

End If

Dim sHTML As String

sHTML = xmlhttp.responsebody

sHTML = StrConv(sHTML, vbUnicode, 1041)

Debug.Print sHTML ‘戻ってきたHTMLをそのまま表示

End Sub

Postに成功しているHTMLフォームのソースを調べて、上に紹介したコードのパラメータだけ変更すればそれなりに動く物が作れると思う。

サンプル内で記載したリンクの2つめのものにも書かれているが、SHIFT-JISでsendするには、渡す引数は、Byte型でなければならないよう。

それで、1つめのリンク microsoft のサイトでサンプルコードを見つけて解決した。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド