• 締切済み

ExcelでWeb上のデータを確認する方法について

特定のWEBサイト上の表データではないデータ(数値)と、 Excel上にある数値が合致しているかを自動で確認できるようにしたいのですが、 このようなマクロを組むことは可能なのでしょうか。 また、その際、特定のWEBサイト自体がそもそも存在するか(削除されていないか)、 という点についても確認する方法はありますでしょうか。 自動化したい作業は、以下の4つです。  (1)Excelを開いた際に、特定のセルに記載されたURLに自動でアクセス  (2)上記の特定URLが存在するか否かを確認(Excel内に存否(○×等)を記入)  (3)Excel上の特定セルにある数値と、特定URL上にある数値が合致しているかを確認  (4)上記(3)の合致状況を○×等でExcel内に記入  ※(1)~(4)の流れを、複数の特定URLについて同時(or順番)に行いたいです。 調べたところ、その特定のWEBサイト上では、調べたいデータは以下のように記載されていました。 「<div class="item-price"><span class="denominator">$</span>219.99</div>」 この内、「$219.99」というデータがExcel上の数値と合致しているか、確認したいデータです。 大変お手数をお掛け致しますが、ご教示頂けますようお願い致します。

みんなの回答

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.1

とりあえず、単一のURLのみで確認する方法ですが (繰り返し処理に関しては上手いことアレンジしてみてください) ☆質問文にある「特定セル」は仮にA1とします ☆URLの存否はB2、合致判定はC2に出力します ☆IE8以前の場合は多分上手く動作しません。少し書き換える必要があります。。 ☆ページ内に同一クラス名(item-price)は複数存在しないもの(単一)とします Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub test() Const READYSTATE_COMPLETE As Long = 4 Dim objie As Object, p As Object Dim i As Long Dim checkurl As String checkurl = "http://xxxx.com/xxxx/index.htm" 'URLを指定 Range("B2:C2").ClearContents Set p = CreateObject("Msxml2.ServerXMLHTTP") p.Open "GET", checkurl, False p.send If p.Status = 404 Then Range("B2") = "×" Exit Sub Else Range("B2") = "○" End If Set objie = CreateObject("InternetExplorer.Application") With objie .Visible = True .navigate checkurl Do While (.Busy = True) Or (.ReadyState <> READYSTATE_COMPLETE) DoEvents Loop End With Call Sleep(3000) If objie.document.getElementsByClassName("item-price")(0).innertext = Range("A1").Value Then Range("C2") = "○" Else Range("C2") = "×" End If Set p = Nothing Set objie = Nothing End Sub ※URLの存否確認の方法に関しては以下の質問ページを参考にさせて頂きました。 http://okwave.jp/qa/q5058816.html

kurakura48
質問者

お礼

さっそくのご回答をありがとうございます! 内容をご確認させて頂きましたら、またコメントを付けさせて頂きます。 お忙しい中、本当にありがとうございます。