トップページ > windows > microsoft office > EXCEL > VBA > エクセルでWEBサイトのデータを扱う

「トップページ/windows/microsoft office/EXCEL/VBA/エクセルでWEBサイトのデータを扱う」の編集履歴(バックアップ)一覧はこちら

トップページ/windows/microsoft office/EXCEL/VBA/エクセルでWEBサイトのデータを扱う - (2011/03/10 (木) 12:47:07) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

最終更新日時&date() &link_edit(text=ここを編集) #html2(){{{{{{ <TABLE align="right"> <TR> <TD> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4789818772" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> <TD> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4883376435" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> </TR> </TABLE> }}}}}} 「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。 いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。 なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、[[ 別ページ >http://www42.atwiki.jp/tomokazu0525/pages/57.html]]に簡単にまとめている。 ■目次 #contents_line() ■本文 *■ページの概要 「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。 ここのページでは、エクセルの機能を利用する方法をまとめている。 関連ページ:[[VBA以外も利用してWEBから情報の抜き出し(スクレイピング、スパイダリング) >http://www42.atwiki.jp/tomokazu0525/pages/57.html]] **想定シーン ・株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部 ・大量の情報収集 エクセルでやる方法を大きくわけると、 **1.VBAを利用しない。 [[データー-外部データの取り込み-新しいwebクエリ >http://www.1147mono.com/Excel/katsuyou_07.htm]] コメント:VBAと組み合わせないと、手作業をやめるメリットがないのでは。 **2.エクセルVBAを利用する。 VBAを利用する方法は、さらにざっくり3つにわけて説明。 ***2-1.VBAでIE(Internet Explorer)を操作する。 通信コンポーネントを使う場合と比較すると、 良い点:扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) 悪い点:処理に時間がかかる。 ***2-2.VBAで通信コンポーネントを利用する。  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) ***2-3.WebBrowserコントロール 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] *■0.基礎知識 **呼び方(追加で検索するためのキーワード) WEBページからの抽出は、ある程度確立してきている分野らしく、さまざまな呼び名がつけられている。 ■英語:日本語よみ ・scraping:スクレイピング ・(web)data mining:(ウェブ)データマイニング ・web harvesting:ウェブハーベスティング ・spidering:スパイダリング **IEの構造(IE関係のメソッドとプロパティ) [[VBAでHTML操作>http://www2s.biglobe.ne.jp/~iryo/vba/IE/index01.html]] サイト名:EXCEL VBA便利帳 コメント:とりあえず、最低限のことはここに載っている。 ただし、フレームで分割されているような一癖あるページに関しては、このページ下部のリンク等を参照の必要あり。 [[Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作)>http://d.hatena.ne.jp/language_and_engineering/20090710/p1]] サイト名:主に言語とシステム開発に関して [[Internet Explorer のアーキテクチャ >http://msdn.microsoft.com/ja-jp/library/dd163924.aspx]] >Internet Explorer のアーキテクチャの概要、そのコンポーネントの再利用についての情報、および開発者が利用できるすぐれた拡張方法のいくつかの簡単な説明を記載しています。 以下のセクションがあります。 * COM ベースのアーキテクチャ * Internet Explorer の拡張 IExplore.exeと、その下で動いているBrowsui.dllや、Mshtml.dllなどの関係性についてまで解説あり。objectやpropertiesなどより具体的なことについては、[[Reference for Visual Basic Developers>http://msdn.microsoft.com/en-us/library/aa752043(VS.85).aspx]]より深い階層に載っている。 [[Internet Explorer オブジェクト モデルへのアクセス>http://msdn.microsoft.com/ja-jp/library/cc325990.aspx]] サイト名:MSDN *■1 HTMLで構成されたWEBページをVBAで扱う。 流れ 1-1.HTMLをダウンロード 1-2.ダウンロードしたファイルを処理 **1-1.HTMLをダウンロード ダウンロードするには、いくつか方法がある。 ・VBAでIEを操作する。 ・VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) 色々なコンポーネントがあるが、長所・短所は調査中。 ***IEにWEBページを表示させ、コピペする。 [[クリップボードを操作する(2)>http://officetanaka.net/excel/vba/tips/tips81.htm]] サイト名:office TANAKA [[エクセルVBAとWEBクエリを駆使し、WEBページからデータを次々とエクセルへ入力するプログラムを作成したい>http://q.hatena.ne.jp/1231502852]] サイト名:人力検索はてな [[IE.Document.frames>http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html#frames]] サイト名:[[投資プログラマー’S WEB InternetExplorer操作によるコントロールへのアクセス >http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html]] IEを非表示にした方がマシンに負荷をかけずに動かせる。 ただし、IEを非表示で動かす際には、自動クラッシュ機能をオフにしておくべき。 >自動クラッシュ回復機能をオフにするには次のようにします。 >1.Internet Explorer の [ツール] ボタンをクリックし、[インターネット オプション] をクリックします。 >2.[詳細] タブをクリックします。 >3.[ブラウズ] セクションで、[自動クラッシュ回復機能を有効にする] をオフにします。 >引用元:[[ Internet Explorer 8: プライバシー >http://www.microsoft.com/windows/products/winfamily/ie/ie8/ja-jp/ieprivacy_8b2.mspx]] 理由:IEを表示にしておけば、何かあった場合、目視でブラウザを閉じれる。 IEを非表示にしてしまうと、目視ではブラウザが閉じれない。 結果、CPUとメモリを使用し続けるため、パソコンが遅くなる。 ***winhttpライブラリを使ったHTMLダウンロード >WinHTTP は、古参の HTTP ライブラリ WinInet の後継ライブラリです。ただし、必ずしも下位互換ではないため、場合によっては WinInet との使い分けが必要になる場合もあるようです。引用元:[[WinHTTP ライブラリで Web スクレイピング(1)~ GET 編~ | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsWinHTTP1.html]] 記事名:[[WinHTTP ライブラリで Web スクレイピング(1)~ GET 編~>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsWinHTTP1.html]] 記事名:[[ Cookie Handling in WinHTTP>http://msdn.microsoft.com/en-us/library/aa383261(VS.85).aspx]] msdn 記事名:[[WinHTTP (Windows HTTP Services) 覚書>http://www2.wbs.ne.jp/~kanegon/doc/winhttp.txt]] [[Excel/VBAでマクロでPOSTした結果をファイルに落とす - 日記ちゃん >http://d.hatena.ne.jp/tomopo/20090717/1247824294]] [[ Using the WinHttpRequest COM Object (Windows) >http://msdn.microsoft.com/en-us/library/aa384079(v=VS.85).aspx]] ***wininet >Webページのデータを取得し加工したい場合がありますが、IEを使ったり、ActiveX(WebBrouser)コントロールなどを使うと、簡単に受信できる反面、余計な画像も取得されて動作が非常に遅くなります。ここでは、WinInetのAPI関数で直接HTTPによりデータを受信します。 >引用元:[[ WinInetによるHTTPデータの受信>http://mt-soft.sakura.ne.jp/web_dl/vb-parts/get_http/]] [[1.FTPやHTTPを使うときの基本(InternetOpen, InternetCloseHandle) >http://www.happy2-island.com/access/gogo03/capter90100.shtml]] [[2.HTTPやFTPサーバへ接続するには(InternetConnect) >http://www.happy2-island.com/access/gogo03/capter90200.shtml]] [[4.1 HTTPサーバへリクエストを送信する(HttpOpenRequest, HttpSendRequest) (get形式)>http://www.happy2-island.com/access/gogo03/capter90401.shtml]] [[4.4 POST形式でリクエストを送信する(HttpOpenRequest, HttpSendRequest) >http://www.happy2-island.com/access/gogo03/capter90404.shtml]] この本に色々載ってそう。 [[VBAによるTCP/IPプログラミング入門 >http://www.cqpub.co.jp/hanbai/books/18/18771.htm]] 第5章 WinInet APIを利用したTCP/IPプログラム ***MSHTMLライブラリおよび、createDocumentFromUrlを使う方法。 [[VBAでHTMLをダウンロードしてタグ解析する方法  タケのIT技術日誌 >http://tiger-ti.jugem.jp/?eid=2]] [[Web ページをダウンロードする方法~ MSHTML 編>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsMSHTML.html]] ***XMLHTTP サイト側がAPIを公開しており、その戻り値がXMLのときに使いやすい。 でも、2009年時点ではwinhttpのほうが主流みたいです。 [[Web ページをダウンロードする方法~ MSXML 編~ | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html]] [[VBAからPOSTの値を渡してURLを実行できますでしょうか。。 - Insider.NET - @IT >http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=23492]] >XMLHttpRequest は、MSXML ライブラリが提供する、COM オブジェクト 引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] >XMLHTTPはリダイレクトをうまく扱えない [[解説 : XMLHttpRequest >http://ponpon-village.net/ajax/xmlhttp.htm]] 扱う対象がXMLという意味ではなく、戻り値がXML。らしい。 ***XMLHttpRequest >MSXML は XMLHttpRequest の実装を 2 種類用意している。それは、「XMLHTTP」「ServerXMLHTTP」だ。 引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] ***ServerXMLHTTP >WinHTTP と呼ばれる API を基盤とする実装だ。 >WinHTTP は、当初はサーバ間の HTTP 通信のために作成され、 >WinInet よりもセキュリティ面で安全なように、 >Cookie やキャッシュなどの情報は一切共有しない。 >引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] **1-2.ダウンロードしたHTMLファイルを処理する。 HTMLに関しては、XPATH式を適用するのは難易度が高く、手間がかかる。 [[勉強用メモ - EXCEL/VBA/CSSセレクタ >http://www42.atwiki.jp/tomokazu0525/pages/98.html]] [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XPATH >http://www42.atwiki.jp/tomokazu0525/pages/94.html]] *■2.VBAからXML(XTHML)を扱う。 (XPATH式まで) [[VBAでXMLを使う>http://ameblo.jp/tech-note/theme-10014813911.html]] VBEでXML6.0の参照設定をし、XPATH式を使えるようにしているよう。 [[コンピュータにインストールされた MSXML パーサーのバージョンを判別する>http://support.microsoft.com/default.aspx?scid=kb;ja;278674]] [[DOMを利用してXMLデータへアクセス>http://www.kanaya440.com/contents/tips/vbs/003.html]] [[ほかのブックで使用できる形式で Web クエリを保存する>http://office.microsoft.com/ja-jp/excel/HP030742921041.aspx]] [[DOMのメソッド一覧CommentsAdd Star>http://d.hatena.ne.jp/devillikeaangel/20080925/1222343293]] [[DOMのプロパティ一覧>http://d.hatena.ne.jp/devillikeaangel/20080925/1222343133]] [[DOMプロパティ>http://f32.aaa.livedoor.jp/~azusa/?t=js&p=dom_property#a_attributes]] **ダウンロードする [[Web ページをダウンロードする方法~ MSXML 編~>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html]] [[VBAでXML文書のデータ個数取得>http://questionbox.jp.msn.com/qa1853640.html]] **処理する ***VBAからXML WEB [[XML Web サービスの概要(XML Web サービスとは何か?)>http://msdn.microsoft.com/ja-jp/library/cc973024.aspx]] [[Office XPでXML Webサービス>http://www.unisys.co.jp/club/net_view/20030214.html]] [[Microsoft Excel 2002 から XML Web サービスを利用する>http://msdn.microsoft.com/ja-jp/library/aa140334.aspx]] *■3.面倒なページ **A.FRAMEのあるWEBページ [[Frame プロパティ>http://msdn.microsoft.com/ja-jp/library/system.windows.controls.frame_properties.aspx]] サイト名:MSDN [[frames Collection>http://msdn.microsoft.com/en-us/library/ms537459(VS.85).aspx]] サイト名:MSDN [[三流君VBAでIE操作 フレーム操作 Document.Frames>http://www.ken3.org/cgi-bin/group/vba_ie_frame.asp]] サイト名: [[InternetExplorer操作 Frameと遊ぶ Objectを探る方法>http://www.ken3.org/vba/backno/vba116.html]] [[IE.Document.frames>http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html#frames]] サイト名:[[投資プログラマー’S WEB InternetExplorer操作によるコントロールへのアクセス >http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html]] フレームの属性の見つけ方(英語)。機械翻訳の日本語もあるが、翻訳がお粗末すぎて余計にわからん。 [[How To Find the src Attribute of a Frame Element >http://support.microsoft.com/?scid=kb%3Ben-us%3B297950&x=9&y=18]] **B.クリック等でページ遷移など表示が変化するWEBページ ***スクリプト言語javascript [[Excel→Javascriptポップアップウィンドウへの入力について>http://www.moug.net/faq/viewtopic.php?t=37039]] [[win32 ウィンドウ>http://msdn.microsoft.com/ja-jp/library/cc410656.aspx]] [[IE SELECT後 .fireEventでJavaScriptのイベントを起動>http://www.ken3.org/vba/backno/vba155.html]] ***ログイン等が必要なページ [[ 三流君VBA:InternetExplorer.application操作 .Clickでクリック >http://www.ken3.org/vba/backno/vba097.html]] *4.(補足)画像ファイルなどのファイルを扱う。 HTMLの文字列だけではなく、ファイルを扱う方法。 [[三流君VBA:URLDownloadToFile APIを使用してWebからファイルをダウンロードしてみた >http://www.ken3.org/vba/backno/vba120.html]] [[VBAでスクレイピングして画像をダウンロードしてシートに貼り付ける >http://www.simple-sys.com/blog/2008/04/26/338/]] サイト名:[[simple blog いろいろ勉強中 >http://www.simple-sys.com/blog/]] *未整理 [[三流君VBAでIE操作 メルマガ バックナンバー 全て>http://www.ken3.org/cgi-bin/group/vba_ie_backno.asp]] ***IE:その他 [[Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作>http://d.hatena.ne.jp/language_and_engineering/20090710/p1]] コメント:ページ中段の「IE自動操作用の関数ライブラリを作ろう」のコーナーが役立つ。 [[複数起動させたIEのイベントを拾うには>http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200511/05110061.txt]] [[VBAでIEのページを印刷可能?>http://www.moug.net/faq/viewtopic.php?t=38664]] ページタイトル:[[IEオブジェクトを作る(IE7編)>http://www.happy2-island.com/vbs/cafe02/capter00711.shtml]] サイト名:[[Happy!Happy!Island>http://www.happy2-island.com/]] ■関連用語 #XMLSS:スプレッドシートスキーマ 「Excel本来のxls形式に準じるような多くの情報をXMLとして保存し、そしてまたxls形式と同様にアイコンをダブルクリックすればExcelが立ち上がるようなファイル形式」 http://park18.wakwak.com/~little-box/xml_basic/8-009.htm ■関連ツール [[URLエンコード・デコードフォーム>http://www.tagindex.com/tool/url.html]] &link_edit(text=ここを編集) *ページフッタ **このページの1階層上のページ &link_parent() **このページの1階層下のページ #lsd() **このページに含まれるタグ &tags() **このページへのアクセス数 今日:&counter(today) 昨日:&counter(yesterday) これまで合計:&counter(total)
最終更新日時&date() &link_edit(text=ここを編集) #html2(){{{{{{ <TABLE align="right"> <TR> <TD> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4789818772" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> <TD> <iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=tomokazu0525-22&o=9&p=8&l=as1&m=amazon&f=ifr&md=1X69VDGQCMF7Z30FM082&asins=4883376435" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> </TR> </TABLE> }}}}}} 「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。 いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。 なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、[[ 別ページ >http://www42.atwiki.jp/tomokazu0525/pages/57.html]]に簡単にまとめている。 ■目次 #contents_line() ■本文 *■ページの概要 「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。 ここのページでは、エクセルの機能を利用する方法をまとめている。 関連ページ:[[VBA以外も利用してWEBから情報の抜き出し(スクレイピング、スパイダリング) >http://www42.atwiki.jp/tomokazu0525/pages/57.html]] **想定シーン ・株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部 ・大量の情報収集 エクセルでやる方法を大きくわけると、 **(a).VBAを利用しない。 [[データー-外部データの取り込み-新しいwebクエリ >http://www.1147mono.com/Excel/katsuyou_07.htm]] コメント:VBAと組み合わせないと、手作業をやめるメリットがないのでは。 **(b).エクセルVBAを利用する。 VBAを利用する方法は、さらにざっくり3つにわけて説明。 ***(b)-1.VBAでIE(Internet Explorer)を操作する。 通信コンポーネントを使う場合と比較すると、 良い点:扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) 悪い点:処理に時間がかかる。 ***(b)-2.VBAで通信コンポーネントを利用する。  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) ***(b)-3.WebBrowserコントロール 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] *■0.基礎知識 **呼び方(追加で検索するためのキーワード) WEBページからの抽出は、ある程度確立してきている分野らしく、さまざまな呼び名がつけられている。 ■英語:日本語よみ ・scraping:スクレイピング ・(web)data mining:(ウェブ)データマイニング ・web harvesting:ウェブハーベスティング ・spidering:スパイダリング **IEの構造(IE関係のメソッドとプロパティ) [[VBAでHTML操作>http://www2s.biglobe.ne.jp/~iryo/vba/IE/index01.html]] サイト名:EXCEL VBA便利帳 コメント:とりあえず、最低限のことはここに載っている。 ただし、フレームで分割されているような一癖あるページに関しては、このページ下部のリンク等を参照の必要あり。 [[Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作)>http://d.hatena.ne.jp/language_and_engineering/20090710/p1]] サイト名:主に言語とシステム開発に関して [[Internet Explorer のアーキテクチャ >http://msdn.microsoft.com/ja-jp/library/dd163924.aspx]] >Internet Explorer のアーキテクチャの概要、そのコンポーネントの再利用についての情報、および開発者が利用できるすぐれた拡張方法のいくつかの簡単な説明を記載しています。 以下のセクションがあります。 * COM ベースのアーキテクチャ * Internet Explorer の拡張 IExplore.exeと、その下で動いているBrowsui.dllや、Mshtml.dllなどの関係性についてまで解説あり。objectやpropertiesなどより具体的なことについては、[[Reference for Visual Basic Developers>http://msdn.microsoft.com/en-us/library/aa752043(VS.85).aspx]]より深い階層に載っている。 [[Internet Explorer オブジェクト モデルへのアクセス>http://msdn.microsoft.com/ja-jp/library/cc325990.aspx]] サイト名:MSDN *■1 HTMLで構成されたWEBページをVBAで扱う。 流れ 1-1.HTMLをダウンロード 1-2.ダウンロードしたファイルを処理 **1-1.HTMLをダウンロード ダウンロードするには、いくつか方法がある。 ・VBAでIEを操作する。 ・VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) 色々なコンポーネントがあるが、長所・短所は調査中。 ***IEにWEBページを表示させ、コピペする。 [[クリップボードを操作する(2)>http://officetanaka.net/excel/vba/tips/tips81.htm]] サイト名:office TANAKA [[エクセルVBAとWEBクエリを駆使し、WEBページからデータを次々とエクセルへ入力するプログラムを作成したい>http://q.hatena.ne.jp/1231502852]] サイト名:人力検索はてな [[IE.Document.frames>http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html#frames]] サイト名:[[投資プログラマー’S WEB InternetExplorer操作によるコントロールへのアクセス >http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html]] IEを非表示にした方がマシンに負荷をかけずに動かせる。 ただし、IEを非表示で動かす際には、自動クラッシュ機能をオフにしておくべき。 >自動クラッシュ回復機能をオフにするには次のようにします。 >1.Internet Explorer の [ツール] ボタンをクリックし、[インターネット オプション] をクリックします。 >2.[詳細] タブをクリックします。 >3.[ブラウズ] セクションで、[自動クラッシュ回復機能を有効にする] をオフにします。 >引用元:[[ Internet Explorer 8: プライバシー >http://www.microsoft.com/windows/products/winfamily/ie/ie8/ja-jp/ieprivacy_8b2.mspx]] 理由:IEを表示にしておけば、何かあった場合、目視でブラウザを閉じれる。 IEを非表示にしてしまうと、目視ではブラウザが閉じれない。 結果、CPUとメモリを使用し続けるため、パソコンが遅くなる。 ***winhttpライブラリを使ったHTMLダウンロード >WinHTTP は、古参の HTTP ライブラリ WinInet の後継ライブラリです。ただし、必ずしも下位互換ではないため、場合によっては WinInet との使い分けが必要になる場合もあるようです。引用元:[[WinHTTP ライブラリで Web スクレイピング(1)~ GET 編~ | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsWinHTTP1.html]] 記事名:[[WinHTTP ライブラリで Web スクレイピング(1)~ GET 編~>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsWinHTTP1.html]] 記事名:[[ Cookie Handling in WinHTTP>http://msdn.microsoft.com/en-us/library/aa383261(VS.85).aspx]] msdn 記事名:[[WinHTTP (Windows HTTP Services) 覚書>http://www2.wbs.ne.jp/~kanegon/doc/winhttp.txt]] [[Excel/VBAでマクロでPOSTした結果をファイルに落とす - 日記ちゃん >http://d.hatena.ne.jp/tomopo/20090717/1247824294]] [[ Using the WinHttpRequest COM Object (Windows) >http://msdn.microsoft.com/en-us/library/aa384079(v=VS.85).aspx]] ***wininet >Webページのデータを取得し加工したい場合がありますが、IEを使ったり、ActiveX(WebBrouser)コントロールなどを使うと、簡単に受信できる反面、余計な画像も取得されて動作が非常に遅くなります。ここでは、WinInetのAPI関数で直接HTTPによりデータを受信します。 >引用元:[[ WinInetによるHTTPデータの受信>http://mt-soft.sakura.ne.jp/web_dl/vb-parts/get_http/]] [[1.FTPやHTTPを使うときの基本(InternetOpen, InternetCloseHandle) >http://www.happy2-island.com/access/gogo03/capter90100.shtml]] [[2.HTTPやFTPサーバへ接続するには(InternetConnect) >http://www.happy2-island.com/access/gogo03/capter90200.shtml]] [[4.1 HTTPサーバへリクエストを送信する(HttpOpenRequest, HttpSendRequest) (get形式)>http://www.happy2-island.com/access/gogo03/capter90401.shtml]] [[4.4 POST形式でリクエストを送信する(HttpOpenRequest, HttpSendRequest) >http://www.happy2-island.com/access/gogo03/capter90404.shtml]] この本に色々載ってそう。 [[VBAによるTCP/IPプログラミング入門 >http://www.cqpub.co.jp/hanbai/books/18/18771.htm]] 第5章 WinInet APIを利用したTCP/IPプログラム ***MSHTMLライブラリおよび、createDocumentFromUrlを使う方法。 [[VBAでHTMLをダウンロードしてタグ解析する方法  タケのIT技術日誌 >http://tiger-ti.jugem.jp/?eid=2]] [[Web ページをダウンロードする方法~ MSHTML 編>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsMSHTML.html]] ***XMLHTTP サイト側がAPIを公開しており、その戻り値がXMLのときに使いやすい。 でも、2009年時点ではwinhttpのほうが主流みたいです。 [[Web ページをダウンロードする方法~ MSXML 編~ | YU-TANG's MS-Access Discovery >http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html]] [[VBAからPOSTの値を渡してURLを実行できますでしょうか。。 - Insider.NET - @IT >http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=23492]] >XMLHttpRequest は、MSXML ライブラリが提供する、COM オブジェクト 引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] >XMLHTTPはリダイレクトをうまく扱えない [[解説 : XMLHttpRequest >http://ponpon-village.net/ajax/xmlhttp.htm]] 扱う対象がXMLという意味ではなく、戻り値がXML。らしい。 ***XMLHttpRequest >MSXML は XMLHttpRequest の実装を 2 種類用意している。それは、「XMLHTTP」「ServerXMLHTTP」だ。 引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] ***ServerXMLHTTP >WinHTTP と呼ばれる API を基盤とする実装だ。 >WinHTTP は、当初はサーバ間の HTTP 通信のために作成され、 >WinInet よりもセキュリティ面で安全なように、 >Cookie やキャッシュなどの情報は一切共有しない。 >引用元:[[XMLHttpRequest を作成する - Entering Passive Mode >http://fireball.loafer.jp/kes/article_220.html]] **1-2.ダウンロードしたHTMLファイルを処理する。 HTMLに関しては、XPATH式を適用するのは難易度が高く、手間がかかる。 [[勉強用メモ - EXCEL/VBA/CSSセレクタ >http://www42.atwiki.jp/tomokazu0525/pages/98.html]] [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XPATH >http://www42.atwiki.jp/tomokazu0525/pages/94.html]] *■2.VBAからXML(XTHML)を扱う。 (XPATH式まで) [[VBAでXMLを使う>http://ameblo.jp/tech-note/theme-10014813911.html]] VBEでXML6.0の参照設定をし、XPATH式を使えるようにしているよう。 [[コンピュータにインストールされた MSXML パーサーのバージョンを判別する>http://support.microsoft.com/default.aspx?scid=kb;ja;278674]] [[DOMを利用してXMLデータへアクセス>http://www.kanaya440.com/contents/tips/vbs/003.html]] [[ほかのブックで使用できる形式で Web クエリを保存する>http://office.microsoft.com/ja-jp/excel/HP030742921041.aspx]] [[DOMのメソッド一覧CommentsAdd Star>http://d.hatena.ne.jp/devillikeaangel/20080925/1222343293]] [[DOMのプロパティ一覧>http://d.hatena.ne.jp/devillikeaangel/20080925/1222343133]] [[DOMプロパティ>http://f32.aaa.livedoor.jp/~azusa/?t=js&p=dom_property#a_attributes]] **ダウンロードする [[Web ページをダウンロードする方法~ MSXML 編~>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsVbaXMLHTTP.html]] [[VBAでXML文書のデータ個数取得>http://questionbox.jp.msn.com/qa1853640.html]] **処理する ***VBAからXML WEB [[XML Web サービスの概要(XML Web サービスとは何か?)>http://msdn.microsoft.com/ja-jp/library/cc973024.aspx]] [[Office XPでXML Webサービス>http://www.unisys.co.jp/club/net_view/20030214.html]] [[Microsoft Excel 2002 から XML Web サービスを利用する>http://msdn.microsoft.com/ja-jp/library/aa140334.aspx]] *■3.面倒なページ **A.FRAMEのあるWEBページ [[Frame プロパティ>http://msdn.microsoft.com/ja-jp/library/system.windows.controls.frame_properties.aspx]] サイト名:MSDN [[frames Collection>http://msdn.microsoft.com/en-us/library/ms537459(VS.85).aspx]] サイト名:MSDN [[三流君VBAでIE操作 フレーム操作 Document.Frames>http://www.ken3.org/cgi-bin/group/vba_ie_frame.asp]] サイト名: [[InternetExplorer操作 Frameと遊ぶ Objectを探る方法>http://www.ken3.org/vba/backno/vba116.html]] [[IE.Document.frames>http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html#frames]] サイト名:[[投資プログラマー’S WEB InternetExplorer操作によるコントロールへのアクセス >http://invest-prg.rich-prj.com/p_progtip/ie_ctrl.html]] フレームの属性の見つけ方(英語)。機械翻訳の日本語もあるが、翻訳がお粗末すぎて余計にわからん。 [[How To Find the src Attribute of a Frame Element >http://support.microsoft.com/?scid=kb%3Ben-us%3B297950&x=9&y=18]] **B.クリック等でページ遷移など表示が変化するWEBページ ***スクリプト言語javascript [[Excel→Javascriptポップアップウィンドウへの入力について>http://www.moug.net/faq/viewtopic.php?t=37039]] [[win32 ウィンドウ>http://msdn.microsoft.com/ja-jp/library/cc410656.aspx]] [[IE SELECT後 .fireEventでJavaScriptのイベントを起動>http://www.ken3.org/vba/backno/vba155.html]] ***ログイン等が必要なページ [[ 三流君VBA:InternetExplorer.application操作 .Clickでクリック >http://www.ken3.org/vba/backno/vba097.html]] *4.(補足)画像ファイルなどのファイルを扱う。 HTMLの文字列だけではなく、ファイルを扱う方法。 [[三流君VBA:URLDownloadToFile APIを使用してWebからファイルをダウンロードしてみた >http://www.ken3.org/vba/backno/vba120.html]] [[VBAでスクレイピングして画像をダウンロードしてシートに貼り付ける >http://www.simple-sys.com/blog/2008/04/26/338/]] サイト名:[[simple blog いろいろ勉強中 >http://www.simple-sys.com/blog/]] *未整理 [[三流君VBAでIE操作 メルマガ バックナンバー 全て>http://www.ken3.org/cgi-bin/group/vba_ie_backno.asp]] ***IE:その他 [[Excel VBAのマクロで,IEを自動操作しよう (DOMセレクタ関数をVBAで自作>http://d.hatena.ne.jp/language_and_engineering/20090710/p1]] コメント:ページ中段の「IE自動操作用の関数ライブラリを作ろう」のコーナーが役立つ。 [[複数起動させたIEのイベントを拾うには>http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200511/05110061.txt]] [[VBAでIEのページを印刷可能?>http://www.moug.net/faq/viewtopic.php?t=38664]] ページタイトル:[[IEオブジェクトを作る(IE7編)>http://www.happy2-island.com/vbs/cafe02/capter00711.shtml]] サイト名:[[Happy!Happy!Island>http://www.happy2-island.com/]] ■関連用語 #XMLSS:スプレッドシートスキーマ 「Excel本来のxls形式に準じるような多くの情報をXMLとして保存し、そしてまたxls形式と同様にアイコンをダブルクリックすればExcelが立ち上がるようなファイル形式」 http://park18.wakwak.com/~little-box/xml_basic/8-009.htm ■関連ツール [[URLエンコード・デコードフォーム>http://www.tagindex.com/tool/url.html]] &link_edit(text=ここを編集) *ページフッタ **このページの1階層上のページ &link_parent() **このページの1階層下のページ #lsd() **このページに含まれるタグ &tags() **このページへのアクセス数 今日:&counter(today) 昨日:&counter(yesterday) これまで合計:&counter(total)

表示オプション

横に並べて表示:
変化行の前後のみ表示: