YuTaKoメモ

まずは欧州や日本の法律など、日々の覚書としていきます

目次
欧州の法令 日本の法令
(道路)
保安基準 VBA

Word,VBA,URL,UTF-8 外部Webページのコードを取得

VBA で 外部Webページ の コード を 取得 する

URLを指定して、そのページのhtmlコードを取得するプロシージャです
自分のページに外部ページをリンク付けしたまま、CSSだけ入れ替えて表示させたいだけなのですが、

Chrome ベースでやってるとうまくいかず、、、
セキュリティ上、クロスドメイン制約ってのがブラウザでされているらしく、

どうあがいても、GitHubさんに jQuery-cross-domain-requests ってのをもらって使わなきゃならくて、
VBA や html もままならない知識レベルなので、軽くやってみてとりあえず諦めました。

で、以前 VBAIE で開いたページのコードを読みだした事を思い出し、、、

なのでできるはず!と思いなおし、

   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 を追加しました



以下、ほぼ元のままで記述


  1.   Dim ObjIE As XMLHTTP60    'オブジェクト宣言
  2.   Set ObjIE = New XMLHTTP60    '新規オブジェクト生成?
  3.   Dim refText As ADODB.Stream    'UTF-8用変数宣言
  4.   Set refText = New ADODB.Stream    'UTF-8用の箱立ち上げ
  5.   Dim startTime As Single
  6.   startTime = Timer
  7.   Set ObjIE = CreateObject("MSXML2.XMLHTTP  'XMLHTTPオブジェクト生成
  8.   ObjIE.Open "GET", "http~~~", False    'URLのコードを取得
  9.   ObjIE.send                      'URLのコードを保管
  10.   Do While
  11.     ObjIE.readyState < 4
  12.     DoEvents
  13.   Loop
  14.   Debug.Print ObjIE.responseText    'URLコードを読める状態で出す
  15.   With refText
  16.     .Type = adTypeText
  17.     .Charset = "UTF-8"        ' UTF-8
  18.     .LineSeparator = adLF
  19.     .Open
  20.     .WriteText ObjIE.responseText '読める状態で書き込む
  21.     .SaveToFile "C:\Users\~~~~\test.txt", adSaveCreateOverWrite
                             '上書き保存
  22.     .Close
  23.   End With