トップページ > 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 )のフローの一部 ・大量の情報収集 エクセルで処理する方法を大きくわけると、 **(a).VBA他のプログラム言語を利用しない。 [[データー-外部データの取り込み-新しいwebクエリ >http://www.1147mono.com/Excel/katsuyou_07.htm]] コメント:VBAと組み合わせないと、手作業をやめるメリットがないのでは。 **(b).エクセルVBAを利用する。 VBAを利用する方法は、さらにざっくり3つにわけて説明。 ***(b)-イ.VBAでIE(Internet Explorer)を操作する。 通信コンポーネントを使う場合と比較すると、 良い点:扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) 悪い点:処理に時間がかかる。 ***(b)-ロ.VBAで通信コンポーネントを利用する。  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、VBAよりは処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) ***(b)-ハ.VBAでWebBrowserコントロールを扱う。 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] *(い) VBAで「HTMLで書かれたWEBページ」を扱う。 流れ 1.HTMLをダウンロード 2.ダウンロードしたファイルを処理 **(い)-1.HTMLファイルをダウンロードする、WEBページのデータをエクセルファイルに取り込む ダウンロードするには、いくつか方法がある。 (b)-イ.VBAでIEを操作する。 (b)-ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) 色々なコンポーネントがあるが、長所・短所は調査中。 ***方法イ.VBAでIE(Internet Explorer)を操作し、WEBページのデータをエクセルファイルに取り込む(IEにWEBページを表示させ、コピペする。) ステップ1.URLを与えて表示させる [[IEを起動してWebページを表示 サイト名:ExcelVBA便利帳 >http://www2s.biglobe.ne.jp/~iryo/vba/IE/window1.html#no01]] ステップ2.コピペする [[Office TANAKA - Excel VBA Tips[クリップボードを操作する(2)] >http://officetanaka.net/excel/vba/tips/tips81.htm]] または [[HTML情報を取得する サイト名:ExcelVBA便利帳 >http://www2s.biglobe.ne.jp/~iryo/vba/IE/hdata1.html#no01]] 関連情報ページ:[[勉強用メモ - VBA/IE(internet explorer) >http://www42.atwiki.jp/tomokazu0525/pages/322.html]] ***方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/通信コンポーネントを利用(wininet,winhttp,XMLHttp等 >http://www42.atwiki.jp/tomokazu0525/pages/324.html]] **(い)-2.ダウンロードしたデータを処理する。 ***ダウンロードデータをXPATHで処理 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XPATH >http://www42.atwiki.jp/tomokazu0525/pages/94.html]] HTMLに関しては、XPATH式をVBAで適用するのは難易度が高く、手間がかかる。(javascriptの知識が必要) ***ダウンロードデータを正規表現で処理 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/正規表現 >http://www42.atwiki.jp/tomokazu0525/pages/103.html]] ***ダウンロードデータをCSSセレクタで処理 [[勉強用メモ - EXCEL/VBA/CSSセレクタ >http://www42.atwiki.jp/tomokazu0525/pages/98.html]] *(ろ). VBAから「XML(XTHML,XBRL)」を扱う。 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XML >http://www42.atwiki.jp/tomokazu0525/pages/323.html]] [[勉強用メモ - トップページ/windows/プログラミング/XBRL >http://www42.atwiki.jp/tomokazu0525/pages/167.html]] *(は). VBAで扱うのが面倒なページ **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.URLは同一なのに表示が変化する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]] *(に).画像ファイルなどのファイルを扱う。 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)-イ.VBAでIE(Internet Explorer)を操作する。 通信コンポーネントを使う場合と比較すると、 良い点:扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) 悪い点:処理に時間がかかる。 ***(b)-ロ.VBAで通信コンポーネントを利用する。  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、VBAよりは処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) ***(b)-ハ.VBAでWebBrowserコントロールを扱う。 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] *(い) VBAで「HTMLで書かれたWEBページ」を扱う。 流れ 1.HTMLをダウンロード 2.ダウンロードしたファイルを処理 **STEP1.HTMLファイルをダウンロードする、WEBページのデータをエクセルファイルに取り込む ダウンロードするには、いくつか方法がある。 方法イ.VBAでIEを操作する。 方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) ***方法イ.VBAでIE(Internet Explorer)を操作し、WEBページのデータをエクセルファイルに取り込む(IEにWEBページを表示させ、コピペする。) ステップ1.URLを与えて表示させる [[IEを起動してWebページを表示 サイト名:ExcelVBA便利帳 >http://www2s.biglobe.ne.jp/~iryo/vba/IE/window1.html#no01]] ステップ2.コピペする [[Office TANAKA - Excel VBA Tips[クリップボードを操作する(2)] >http://officetanaka.net/excel/vba/tips/tips81.htm]] または [[HTML情報を取得する サイト名:ExcelVBA便利帳 >http://www2s.biglobe.ne.jp/~iryo/vba/IE/hdata1.html#no01]] 関連情報ページ:[[勉強用メモ - VBA/IE(internet explorer) >http://www42.atwiki.jp/tomokazu0525/pages/322.html]] ***方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) 色々なコンポーネントがあるため、別ページに記載。 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/通信コンポーネントを利用(wininet,winhttp,XMLHttp等 >http://www42.atwiki.jp/tomokazu0525/pages/324.html]] **STEP2.ダウンロードしたデータを処理する。 ***データ処理(解析)方法1. ダウンロードデータをXPATHで処理 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XPATH >http://www42.atwiki.jp/tomokazu0525/pages/94.html]] HTMLに関しては、XPATH式をVBAで適用するのは難易度が高く、手間がかかる。(javascriptの知識が必要) ***データ処理(解析)方法2. ダウンロードデータを正規表現で処理 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/正規表現 >http://www42.atwiki.jp/tomokazu0525/pages/103.html]] ***データ処理(解析)方法3. ダウンロードデータをCSSセレクタで処理 [[勉強用メモ - EXCEL/VBA/CSSセレクタ >http://www42.atwiki.jp/tomokazu0525/pages/98.html]] *(ろ). VBAから「XML(XTHML,XBRL)」を扱う。 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/XML >http://www42.atwiki.jp/tomokazu0525/pages/323.html]] [[勉強用メモ - トップページ/windows/プログラミング/XBRL >http://www42.atwiki.jp/tomokazu0525/pages/167.html]] *(は). VBAで扱うのが面倒なページ **面倒パターン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.URLは同一なのに表示が変化する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]] *(に).画像ファイルなどのファイルを扱う。 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)

表示オプション

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