Word,VBA,URL,UTF-8 外部Webページのコードを取得
VBA で 外部Webページ の コード を 取得 する
URLを指定して、そのページのhtmlコードを取得するプロシージャです
自分のページに外部ページをリンク付けしたまま、CSSだけ入れ替えて表示させたいだけなのですが、
Chrome ベースでやってるとうまくいかず、、、
セキュリティ上、クロスドメイン制約ってのがブラウザでされているらしく、
どうあがいても、GitHubさんに jQuery-cross-domain-requests ってのをもらって使わなきゃならくて、
VBA や html もままならない知識レベルなので、軽くやってみてとりあえず諦めました。
で、以前 VBA で IE で開いたページのコードを読みだした事を思い出し、、、
なのでできるはず!と思いなおし、
Word VBAで対象法令のページを①探して → ②開いて → ③コード取得
→ ④Wordで置換 → ⑤htmlもしくはwordに変換
の順序でやろう頑張ってます。
まずは②、③をまとめて
参照設定として、「MSXML2.XMLHTTP」を使う為に、『Microsoft XML, v*.*』を追加?
v6.0 を追加してうまくいきましたが、本当はSet ~ CreateObject("MSXML2.XMLHTTP") は不要なのかもですし、、、
さらには2行目と11行目が???
どっちでうまくいったのかはよくわかってません
また、相手先のページが「UTF-8」とやらで書かれていて、
これを読みだす為に『Microsoft ActiveX Data Objects *.* Library』を追加
最新版と見られた v6.1 を追加しました
以下、ほぼ元のままで記述
- Dim ObjIE As XMLHTTP60 'オブジェクト宣言
- Set ObjIE = New XMLHTTP60 '新規オブジェクト生成?
- Dim refText As ADODB.Stream 'UTF-8用変数宣言
- Set refText = New ADODB.Stream 'UTF-8用の箱立ち上げ
- Dim startTime As Single
- startTime = Timer
- Set ObjIE = CreateObject("MSXML2.XMLHTTP 'XMLHTTPオブジェクト生成
- ObjIE.Open "GET", "http~~~", False 'URLのコードを取得
- ObjIE.send 'URLのコードを保管
- Do While
- ObjIE.readyState < 4
- DoEvents
- Loop
- Debug.Print ObjIE.responseText 'URLコードを読める状態で出す
- With refText
- .Type = adTypeText
- .Charset = "UTF-8" ' UTF-8 を
- .LineSeparator = adLF
- .Open
- .WriteText ObjIE.responseText '読める状態で書き込む
- .SaveToFile "C:\Users\~~~~\test.txt", adSaveCreateOverWrite
'上書き保存 - .Close
- End With