- ベストアンサー
VBAからhttpを呼びソースを取得
ブラウザでURLを指定すると、htmlがサーバーから返され表示されます。 それをVBAからURLを指定し、htmlのソースを文字列で受け取りたいと思います。 普通にshellで渡すとブラウザが起動されてしまうし・・・。 方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
HTMLテキストを取るには Sub test01() Set obj = CreateObject("InternetExplorer.Application.1") 'IEを新規オブジェクトとして宣言 obj.Visible = True targetURL = "http://okweb.jp/kotaeru.php3?qid=1044759" obj.Navigate (targetURL) '指定アドレスに飛ばす '時間待ち(objが動作中であれば) Do While obj.busy Loop '表示 obj.Visible = True For n = 0 To obj.Document.All.Length - 1 If UCase(Trim(obj.Document.All(n).tagname)) = "HTML" Then s = obj.Document.All(n).outerhtml 'HTMLのテキスト Cells(n + 1, 1) = s 'エクセルONLY用 End If Next End Sub 2,3のWEBに載ってたものの寄せ集めですが。 なかなか載って無いものですね。 sが文字列です。エクセルなどでは、長さ制約あり。 WSHやBASP21やWEBBROWSERなど使う方法があるようですが、不勉強で全体を見渡せていないので取りあえず。
その他の回答 (1)
- incho0922
- ベストアンサー率41% (84/204)
同様の質問をしたことがあるので・・・^_^; BASP21コンポーネントのW3get関数を利用する方法があります。文字列で「受け取る」ことはできませんが。
補足
BASP21、いいですね。 文字列で受け取らなくても、ソースを取得してファイルオープンすればいいですからね。 サイトを参考に取得することができました。 もう少し教えてください。 あるページで試してみると「ちゃんとしたルートから遷移してください」のエラーとなりました。 クッキーの指定でどうにかなりそうなのですが、どんな値を渡せばいいのかわかりません。 どこかを見ればわかるものでしょうか? (例えば、Temporary Internet Fileとか)
お礼
IE自体をオブジェクトで持っていれば、ログインから実行していけるので画面遷移の問題もクリアですね。 かなり参考になりました。 Webアプリケーションの自動テストツールの作成にも使えそうですね。