プロが教える店舗&オフィスのセキュリティ対策術

どうか教えてください

携帯用サイトのHTMLをエクセルで取得したく
それをするにはuser-agentを変更する必要があるのですが
エクセルVBAから実行するにはどのようにしたらいいでしょうか。

携帯用サイトのHTMLデータを変数に入れるまでをお願いします。
--
エクセル2003

A 回答 (2件)

> 具体的にこれを実行するには何が必要でしょうか?



msinet.ocx というファイルが必要です。(VB6.0ランタイムに含まれているのは分かるのですが、Office製品にくっついてくるかは不明…)
このOCXに含まれるコントロール「Microsoft Internet Transfer Control 6.0」を使っています。なので、コードをコピーしただけでは動作しません。

1. UserFormの編集で「ツール」→「その他のコントロール」を開く。
2. 「Microsoft Internet Transfer Control 6.0」にチェックを入れる
3. ツールボックスに現れた「Inet」をUserFormに貼り付ける。

「Microsoft Internet Transfer Control 6.0」が見つからなかった場合は、OCX自体がインストールされていません。これはVB6.0ランタイムセットをインストールすることで入手できます。Visual StudioでなくともVectorなどで無料配布されているものがあるので探してみてください。


と、ここまで書いてWebBrowser.NavigateでHTTPヘッダの追加が出来ることを思い出しました…(遅っ
ただ、<body>の中身しか取得していませんが。
UserFormにWebBrowserコントロールとCommandButtonコントロールを貼り付けて以下のコードを実行してみてください。

Private Sub CommandButton1_Click()
' User-Agentを「mobile」としてURLにアクセス
Call WebBrowser1.Navigate("** ここにURL **", Headers:="User-Agent: mobile" & vbCrLf)
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim strBodyHtml As String
' <body>タグの中身を取得
strBodyHtml = WebBrowser1.Document.Body.InnerHTML
' TextBox1.Text = strBodyHtml ' テキストボックスに表示するのであれば
End Sub
    • good
    • 0

Microsoft Internet Transfer Control 6.0 を使えばHTTPヘッダを指定してHTMLを取得できます。



Option Explicit

Private Sub CommandButton1_Click()
' Internet Transfer Control(Inet1)でUser-Agentを"Mobile"と指定してHTML取得する例
Call Inet1.Execute(" ** ここにURLを記述 ** ", "GET", "", "User-Agent: Mobile")
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim strBuff As String, strRecv As String

Select Case State
' データ受信
Case icResponseCompleted
strBuff = Inet1.GetChunk(1024, icString)

While Len(strBuff) > 0
strRecv = strRecv & strBuff
strBuff = Inet1.GetChunk(1024, icString)
Wend

' strRecvに取得したHTMLが入る
TextBox1.Text = strRecv
End Select
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

エクセルのVBEに貼り付けましたが、オブジェクトが必要ですみたいな
エラーが出て実行できませんでした。

具体的にこれを実行するには何が必要でしょうか?
あくまでもエクセルで実行したいのですが。。。
Visual Stadioを勝ってインストールすれば使えますか?

お礼日時:2009/09/09 23:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!