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

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

トップページ/windows/microsoft office/EXCEL/VBA/エクセルでWEBサイトのデータを扱う」(2012/04/13 (金) 11:21:35) の最新版変更点

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

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

■最終更新日時 2011年のいつか &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=as4&m=amazon&f=ifr&ref=ss_til&asins=4844333844" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></TD></TR> <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=4883376435" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> </TR> <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> </TR> </TABLE> }}}}}} 「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。 いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。 なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、[[ 別ページ >http://www42.atwiki.jp/tomokazu0525/pages/57.html]]にまとめている。 &mobile(){&amazon(4844333844,text,image,width=56,height=80)} ■目次 #contents_line() ■本文 *■ページの概要 「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。 ここのページでは、エクセルの機能を利用する方法をまとめている。 関連ページ:[[VBA以外も利用してWEBから情報の抜き出し(スクレイピング、スパイダリング) >http://www42.atwiki.jp/tomokazu0525/pages/57.html]] **想定シーン ・株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部 ・大量の情報収集 ***VBAでスクレイピングしている具体例 知識の無い状態で見ても理解不能かと思いますが。 [[App StoreからiPhoneアプリ情報を取得するExcel VBAサンプル - iPhone.goodegg.jp 2009-09-21 >http://iphone.goodegg.jp/archives/5027]] **エクセルでの処理方法 エクセルで処理する方法を大きくわけると、 ***処理方法(a).VBA他のプログラム言語を利用しない。 [[データー-外部データの取り込み-新しいwebクエリ >http://www.1147mono.com/Excel/katsuyou_07.htm]] コメント:VBAと組み合わせないと、手作業をやめるメリットがないのでは。 ***処理方法(b).エクセルVBAを利用する。 本ページではVBAでの利用を対象にする。 ***処理方法(C).エクセルVBA以外の言語も利用する。 本ページでは、これも対象。後述する通信コンポーネント等は、こちら(だと思う)。 **対象のWEBページ(サイト)のデータ形式(ファイル形式)ごとにやり方が異なる ***(い)HTMLファイル ***(ろ)XML ***(は)画像ファイル ***(に)その他もろもろのページ(HTMLだが処理が面倒なページ、javascriptなどで動的なページ) *(い) VBAで「HTMLで書かれたWEBページ」を扱う。 流れ 1.HTMLをダウンロード 2.ダウンロードしたファイルを処理 **STEP1.HTMLファイルをダウンロードする、WEBページのデータをエクセルファイルに取り込む ダウンロードするには、いくつか方法がある。 方法イ.VBAでIEを操作する。 方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) ***方法イ.VBAでIE(Internet Explorer)を操作し、WEBページのデータをエクセルファイルに取り込む(IEにWEBページを表示させ、コピペする。) ■IEを操作する方法は、後述する通信コンポーネントを使う方法と比較した場合の良い点悪い点。 良い点: ・扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) ・直感的にわかりやすい 悪い点:処理に時間がかかる。 ステップ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など。)  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、VBAよりは処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) 色々なコンポーネントがあるため、別ページに記載。 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/通信コンポーネントを利用(wininet,winhttp,XMLHttp等 >http://www42.atwiki.jp/tomokazu0525/pages/324.html]] ***方法ハ.VBAでWebBrowserコントロールを扱う。 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] **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]] *(は).画像ファイルなどのファイルを扱う。 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で扱うのが面倒なページ **面倒パターン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]] &mobile(){&amazon(4844333844,text,image,width=56,height=80)} #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=as4&m=amazon&f=ifr&ref=ss_til&asins=4844333844" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></TD></TR></TABLE>}}}}}} &link_edit(text=ここを編集) *ページフッタ **このページの1階層上のページ &link_parent() **このページの1階層下のページ #lsd() **このページに含まれるタグ &tags() **このページへのアクセス数 今日:&counter(today) 昨日:&counter(yesterday) これまで合計:&counter(total)
■最終更新日時 2011年のいつか &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=as4&m=amazon&f=ifr&ref=ss_til&asins=4844333844" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></TD></TR> <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=4883376435" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe> </TD> </TR> <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> </TR> </TABLE> }}}}}} 「WEBサイトのデータを、そのまま、または必要な一部分を抜出(取得)してエクセルに貼り付けたい。」というとき用のメモ。 いわゆる、スクレイピング、スパイダリングをエクセル(VBA)でやってやろうという話。 なお、スクレイピング関連用語の詳細や、他のプログラミング言語でデータ取得する方法は、[[ 別ページ >http://www42.atwiki.jp/tomokazu0525/pages/57.html]]にまとめている。 &mobile(){&amazon(4844333844,text,image,width=56,height=80)} ■目次 #contents_line() ■本文 *■ページの概要 「WEBサイトのデータを、そのまま、または一部を抜き出してエクセルに貼り付けたい。」というとき用のメモ。 ここのページでは、エクセルの機能を利用する方法をまとめている。 関連ページ:[[VBA以外も利用してWEBから情報の抜き出し(スクレイピング、スパイダリング) >http://www42.atwiki.jp/tomokazu0525/pages/57.html]] **想定シーン ・株取引を初めとしたWEBを使ったEDI(Electronic Data Interchange )のフローの一部 ・大量の情報収集 ***VBAでスクレイピングしている具体例 知識の無い状態で見ても理解不能かと思いますが。 [[App StoreからiPhoneアプリ情報を取得するExcel VBAサンプル - iPhone.goodegg.jp 2009-09-21 >http://iphone.goodegg.jp/archives/5027]] **エクセルでの処理方法 エクセルで処理する方法を大きくわけると、 ***処理方法(a).VBA他のプログラム言語を利用しない。 [[データー-外部データの取り込み-新しいwebクエリ >http://www.1147mono.com/Excel/katsuyou_07.htm]] コメント:VBAと組み合わせないと、手作業をやめるメリットがないのでは。 ***処理方法(b).エクセルVBAを利用する。 本ページではVBAでの利用を対象にする。 ***処理方法(C).エクセルVBA以外の言語も利用する。 本ページでは、これも対象。後述する通信コンポーネント等は、こちら(だと思う)。 **対象のWEBページ(サイト)のデータ形式(ファイル形式)ごとにやり方が異なる ***(い)HTMLファイル ***(ろ)XML ***(は)画像ファイル ***(に)その他もろもろのページ(HTMLだが処理が面倒なページ、javascriptなどで動的なページ) *(い) VBAで「HTMLで書かれたWEBページ」を扱う。 流れ 1.HTMLをダウンロード 2.ダウンロードしたファイルを処理 **STEP1.HTMLファイルをダウンロードする、WEBページのデータをエクセルファイルに取り込む ダウンロードするには、いくつか方法がある。 方法イ.VBAでIEを操作する。 方法ロ.VBAで通信コンポーネントを利用する。(wininet,winhttp,XMLHttpなど。) ***方法イ.VBAでIE(Internet Explorer)を操作し、WEBページのデータをエクセルファイルに取り込む(IEにWEBページを表示させ、コピペする。) ■IEを操作する方法は、後述する通信コンポーネントを使う方法と比較した場合の良い点悪い点。 良い点: ・扱えるサイトの範囲が広い。(IEで表示できるほぼ全てのページを扱える。) ・直感的にわかりやすい 悪い点:処理に時間がかかる。 ステップ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など。)  wininet,winhttp(Windows HTTP Services),XMLHttpなど。 [[Windows HTTP Servicesとは 【WinHTTP】 - 意味/解説/説明/定義 : IT用語辞典 >http://e-words.jp/w/Windows20HTTP20Services.html]] API関数と表記してあるサイトもある。 良い点:一旦書き上げてしまえば、VBAよりは処理が早い。 悪い点: ・プログラムが複雑になりやすい。(たぶん。) ・扱えないサイトがある。(cookieの処理など。) 色々なコンポーネントがあるため、別ページに記載。 [[勉強用メモ - トップページ/windows/microsoft office/EXCEL/VBA/通信コンポーネントを利用(wininet,winhttp,XMLHttp等 >http://www42.atwiki.jp/tomokazu0525/pages/324.html]] ***方法ハ.VBAでWebBrowserコントロールを扱う。 詳細不明。あまりメリット感じられないので、深堀しない。 メリットデメリットをまとめたページ:[[ 【Excel VBA備忘ログ】WebBrowserコントロールの使用: ★ ダメ株主 Z ★ >http://app.f.m-cocolog.jp/t/typecast/37471/36872/41516185]] **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]] *(は).画像ファイルなどのファイルを扱う。 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で扱うのが面倒なページ **面倒パターン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]] &mobile(){&amazon(4844333844,text,image)} #html2(){{{{{{<TABLE><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=as4&m=amazon&f=ifr&ref=ss_til&asins=4844333844" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></TD></TR></TABLE>}}}}}} &link_edit(text=ここを編集) *ページフッタ **このページの1階層上のページ &link_parent() **このページの1階層下のページ #lsd() **このページに含まれるタグ &tags() **このページへのアクセス数 今日:&counter(today) 昨日:&counter(yesterday) これまで合計:&counter(total)

表示オプション

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