WEBの商品ページにある、商品コードや商品名などをエクセルに項目別で自動入力ができるようにしたいのですが、どのように行えば良いでしょうか?
また、同じ商品名の物は既存の商品名列の下に表示されるようにしたいです、、。
商品ページはCSVファイルなどへの変換が出来ず、HTMLのソースもかなり古いようで、
HTMLとの連携?は早々に諦めてしまいました、、。
VBAを勉強中でとりあえず実行出来る環境だけ整えましたがどこから初めていいやら
考えこんでしまっています。
詳しい方いらっしゃいましたらご教授いただけると幸いです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは。
>WEBの商品ページにある、商品コードや商品名などをエクセルに項目別で自動入力
まず、その前に、そのWebサイトが自動で取得していることを許しているかどうか、ということを確認してください。ただ、明文化されていても、常識て程度、1日に数回のアクセス程度で、個人でおやりになる分には、それを構わないと思うのですが、具体的なノウハウは、少なくとも私は、公開はしません。
次に、かなり古い昔、ここの掲示板で、商品ページなどのWeb構造というのは、繰り返しになっているので、HTML.Document をSplit 関数で分ければよいことを、私などは教わりました。ずいぶん昔の話です。
多くのVBAユーザーは、この後、タグ(tag)をループして、その一つを選び出すという方法を学んでいるようです。まだ、同じようなテクニックを使っている人を見かけます。
私は、正規表現(VBScript.RegExp)という方法を知っていたので、あまり必要としませんでした。とても便利なツールです。なお、現在、私は、Basp21 をVBAで使用しています。この中に正規表現コマンドがあり、Perlライクで使えます。
その後、DOM といって、Webスクリプトの構造は、一定の法則によって書かれているので、JavaScript のコマンドで取得すれば、抜き出せることを知りました。
どこのサイトで知ることができるか、というと、以下のサイトです。
http://www.vba-ie.net/
VBAのIE制御入門
最近、やっと、ここの内容が読めるようにはなったものの、当初、腹が立つほど不親切な書き方だと思いました。情報が分散してしてわかりにくいのです。
実は、もう一つ、欠かせないサイトがあったのです。Yu-Tang さんといって、ここの掲示板の会員でもあった方で、Webスクレイピングというものを日本で最初に流行らせた方です。ネット内の社会問題にもなりかねない勢いで、有名になりすぎて、ついにサイトがなくなってしまいした。この方のサイトの恩恵は大きいです。たぶん、それに似たものは、どこかにあるかと思います。
キーワード [Webスクレイピング][Web クローリング]で探すとテクニックが出てきます。
社会問題というのは、いくつかのWeb上の企業でのロボットによる情報取得を嫌がっています。その代表格は、Amazon です。また、ハローワークの検索サイト、そしてQ&Aサイトのモーグなどが、思い当たります。
先日の「エクセル上のURLからWebページ内特定箇所URL自動取得 」というご質問も同様てす。
ここの掲示板で、取得方法をお聞きになる方は、ある程度、この方面に明るい方でないと、教えるに教えられないというか、回答者にとっても、大変に迷うところになってしまいます。
ここまでが、今までの経緯です。
>どこから初めていいやら考えこんでしまっています。
さて、Yu-Tangさんが教えていた時代と、今変わったのは、いろいろ便利になり、Google で情報が取れる可能性があるということです。私自身は、VBAに頼るせいか使い方は知りませんが、思った以上に便利なようです。また、昔は、そういう情報を取るツールは、ハッキングツールと言って場合によっては、アンチウィルスソフトに引っかかっていたのです。
今は、Internet Explorer で、F12 を押せば、DOMの構造などが、本当に詳しく出てきますので、有名なFireBug(FireFoxのアドオン)などは不要になってしまいました。それだけで、VBAで抜き出す情報が取れます。
添付画像の場合は、教えて!gooの今ご覧になっているサイトですが、以下のようにして、オブジェクトが取れましたので、後は、そこから抜き出すだけです。左上端 ①の□← を押して、画面で取得する部分をクリックして反転させれば、どこら辺りを取ればよいのか教えてくれます。(Class か、ID が良いです)
With objHtml '←IE.Document など、いくつか種類があります。
Set pt = .getElementsByClassName("q_article_info clearfix")
End With
もちろん、画像の場合は、<h1> のタグをループさせれば取れるのでしょうけれど、何百というタグを探さなくてはならないでしょう。Java Script のプログラミングの知識があると、楽になります。
なお、ExcelのWebクエリでも取れる場合がありますが、限界があります。
今、何かよいサイトはないかと思って探していましたが、内容は上級になるかもしれませんが、
https://www.ka-net.org/blog/?p=4855
Ka-net は、いつも最先端の情報がふんだんに含まれていますので、必見かもしれません。ただ、あえていうと、
WinHttpRequest/XMLHTTPRequestオブジェクトで取得しなければならないほど、一般の人たちは急いでいませんし、また、そうしたことで、万が一にも、自分のプロバイターにIPアドレスを通報させられるようにならないとも限りませんので、鈍足のIEオブジェクトでも十分だと思います。
なお、今、どこにも専用ツールのまとめが出ていませんので、以下に記しておきます。
http://alternativeto.net/software/httpwatch/
この中で、IE のF12で足りるとは申しましたが、プロ級になってくると、不足を感じるかもしれません。その前段階で必要になるツールです。Fire Bugは、まだ健在のようです。
以上で、大雑把ですが、今私が知る情報の概況をまとめました。
以下は、IEで、F12 キーを押した後の作業です。
No.1
- 回答日時:
Webクエリという方法があります。
うまくいけばVBA?HTML?一切関係ないよ。という方法です。
http://www4.synapse.ne.jp/yone/excel2010/excel20 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) パイソンでのプログラミングについて 3 2022/08/11 20:31
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Excel(エクセル) エクセルの表について 3 2023/04/14 18:00
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Amazon 新規でAmazon商品ページ作成方法について 1 2022/03/28 00:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahoo! JAPAN IDを新規取得でき...
-
「取得先」という表現について
-
EXCEL、マクロ-改ページ行番号...
-
VB6でCPU情報の取得
-
VBS「開いているページ」のURL...
-
VBで他アプリの「syslistview32...
-
IPアドレスとMACアドレスを取得...
-
アクセスの度にIPアドレスを変...
-
Open 2chやまとめサイトは、2ch...
-
IEを使わないでhtmlテキストを...
-
PHPを使って、別サイトの一部を...
-
curlで取得出来るデータの制限...
-
vb6で、特定のフォルダを常時監...
-
format関数について
-
株価を取得して自分のサイトに...
-
自動車教習所について 質問 普...
-
INIファイル
-
バッチファイルでPCのモデル名...
-
Excel VBA:特定の文字列以降(...
-
ASP(.netではありません)でのUs...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
ps3で久しぶりにCDの音楽情報取...
-
IPアドレスとMACアドレスを取得...
-
format関数について
-
Excel VBA:特定の文字列以降(...
-
【VBA】EXCELブックを開かずに...
-
EXCEL、マクロ-改ページ行番号...
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
VBAでPDFのアクティブページ番...
-
ミュージックのアートワークを...
-
VBS「開いているページ」のURL...
-
VB or VBScriptでPCの製造番号...
-
VBAでPDFファイルの文書のプロ...
-
表示している画面サイズの取得方法
-
積立投資してます。現在平均取...
-
アクセスの度にIPアドレスを変...
-
各クライアントマシンのログイ...
-
VB.NETでボリュームを取得・設...
おすすめ情報