2022/04/24 追記
Dim oDocument As Object
Set oDocument = CreateObject("htmlfile")
で作成したhtmlfileドキュメントオブジェクトに
html文字列を書き込む、そんなデバッグ風景です。
www.youtube.com
https://www.youtube.com/watch?v=RjZZUq40gxY
目次
00:00 0.IEが無くなるので CreateObject("htmlfile")
00:26 1.DoEventsがないと処理が追い付かない?
03:25 2.oDocument.write って追記なの?
07:23 3.JRAオッズ取得を例題にデバッグ
08:17 文字化けの説明
10:00 CreateObject("htmlfile")でDocumentを作り
10:36 リンクからオッズのAタグを取り出す
Option Explicit Sub test_001() Dim oDocument As Object Set oDocument = CreateObject("htmlfile") oDocument.write "<html><body>te<b>st</b></body></html>" 'HTMLをセット oDocument.write "<html><body>test2</body></html>" oDocument.write "<html><body><p>test3</p></body></html>" oDocument.write "<html><body>test4</body></html>" Debug.Print "html:" & oDocument.body.innerHTML Stop End Sub
GetとPOST シフトJISで文字化けしたり・・・・
'URLを受け取り、HTML文字列を返す(シフトJISページ用に変換後) Public Function get_htmlfile(strURL As String) As String Dim objDOC As Object Set objHTML = CreateObject("MSXML2.XMLHTTP") objHTML.Open "GET", strURL, False 'objHTML.overrideMimeType "text/plain; charset=Shift_JIS" DoEvents objHTML.send Sleep 250 '0.25秒待つ DoEvents Do While objHTML.readyState <> 4 DoEvents Loop Dim strHTML As String 'strHTML = objHTML.responseText strHTML = StrConv(objHTML.responseBody, vbUnicode) 'テキスト確認 デバッグ用 Dim strFNAME As String strFNAME = ThisWorkbook.Path & "\testhtml.txt" Open strFNAME For Output As #1 Print #1, Now() & " に実行" Print #1, "strURL:" & strURL Print #1, strHTML Close #1 'Debug.Print strHTML Sleep 250 '0.25秒待つ get_htmlfile = strHTML 'リターン値で返す End Function 'URL,パラメータを受け取り、HTML文字列を返す(シフトJISページ用に変換後) Public Function get_htmlfile_post(strURL As String, strPARA As String) As String Dim objHTML As Object Set objHTML = CreateObject("MSXML2.XMLHTTP") objHTML.Open "POST", strURL, False objHTML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTML.send (strPARA) DoEvents Sleep 250 '0.25秒待つ DoEvents Do While objHTML.readyState <> 4 DoEvents Loop Dim strHTML As String 'strHTML = objHTML.responseText strHTML = StrConv(objHTML.responseBody, vbUnicode) 'テキスト確認 デバッグ用 Dim strFNAME As String strFNAME = ThisWorkbook.Path & "\testhtml.txt" Open strFNAME For Output As #1 Print #1, Now() & " に実行" Print #1, "strURL:" & strURL Print #1, "strPARA:" & strPARA Print #1, strHTML 'HTML Close #1 'Debug.Print strHTML get_htmlfile_post = strHTML 'リターン値で返す End Function
2012/01/12 追記
人力検索の回答に似たような処理があったので、先に
↑こちらを参考にするといいかも。
元の三流記事
↑よくみると、IHTMLDocument 頭IがなくただのHTMLDocumentだった インターフェースのIかわからないが、これだと使えない、、素直に参照設定した方がいいのかなぁ・・・
CreateObject("htmlfile") で HTMLDocumentを作成可能。不思議。
とりあえず、メモメモ。
と思ったら、IHTMLDocumentの頭Iが無いよ、、、しくじった。失敗メモですね。
Option Explicit Sub aaa() Dim objDOC As Object 'なんで、"htmlfile"が不明だが、これでHTMLDocumentを作成可能。不思議。 Set objDOC = CreateObject("htmlfile") 'createObject "MSHTML"や"MSHTML.HTMLDocument"だとエラー・・ Debug.Print TypeName(objDOC) MsgBox TypeName(objDOC) End Sub
続き、は、
MSHTMLを参照設定後、As HTMLDocument と.createDocumentFromUrlで文章を読み込み使うテスト
http://d.hatena.ne.jp/ken3memo/20090904/1252025888
で、参照設定して、As HTMLDocumentで使ったけど、なんかなぁ。素直にCreateObjectで行いたいんだけど。。。