• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAでIEを操作したいです。)

VBAでIEを操作する方法とモノレートの使い方

このQ&Aのポイント
  • VBAを使用して、エクセルでデータ管理している方に、IEを操作する方法とモノレートの使い方について解説します。
  • エクセルでのデータ管理にVBAやマクロを使用し、ウェブページの入力フォームに自動で入力し、結果を再度エクセルに返す方法について解説します。
  • モノレートというサイトを使用して、アマゾン商品の価格推移を調べる方法について解説します。JANコードを入力し、グラフを表示させることで、商品の価格推移を確認できます。さらに、表示されたASINとURLをエクセルに返す方法も解説します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは Sub test()   '参照設定 Microsoft HTML Object Library   Dim objIE As Object   Dim Button As Object   Dim i   As Long   Dim j   As Long   Dim htmlDoc As HTMLDocument   Dim el   As IHTMLElement   Set objIE = CreateObject("InternetExplorer.Application")   objIE.Visible = True      For i = 1 To 100     If Cells(i, 1) <> "" Then       j = 2       objIE.navigate "http://mnrate.com/search?i=All&kwd=" & Cells(i, 1)       While objIE.readyState <> 4 Or objIE.Busy = True         DoEvents       Wend              Set htmlDoc = objIE.document          For Each el In htmlDoc.Links         If InStr(1, el, "http://mnrate.com/item/aid/") > 0 Then           If Rows(i).Find(el, Cells(i, 2), xlValues, xlWhole) Is Nothing Then             j = j + 1             Cells(i, j) = el           End If         End If       Next       If j = 3 Then         Cells(i, j) = objIE.locationurl       End If     End If   Next   objIE.Quit   Set objIE = Nothing End Sub こんな感じで出来ますか?

noname#245127
質問者

お礼

返信ありがとうございました。 さすがカテゴリーマスターですね。 とても勉強になりました。 一つずつ理解していくのは、難しいけど頑張っていきます。 感謝してます。

その他の回答 (2)

回答No.3

こういうやり方もある Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) Sub test() '参照設定 Microsoft HTML Object Library '参照設定 Microsoft InternetExplorer Dim objIE As InternetExplorer Dim htmlDoc As HTMLDocument Dim i As Long Set objIE = New InternetExplorer objIE.Visible = True objIE.navigate "http://mnrate.com/" While objIE.readyState <> 4 Or objIE.Busy = True Sleep 1000 Wend Set htmlDoc = objIE.document For i = 1 To 100 If Cells(i, 1) <> "" Then htmlDoc.forms(0).elements("_item_search_inp").Value = Cells(i, 1).Value htmlDoc.forms(0).elements("_graph_search_btn").Click Sleep 3000 While objIE.readyState <> 4 Or objIE.Busy = True Sleep 1000 Wend If htmlDoc.forms.Length > 1 Then Cells(i, 2).Value = htmlDoc.forms(1).elements("asin").Value Cells(i, 3).Value = objIE.locationurl Else Cells(i, 4).Value = "Hitしませんでした" End If End If Next objIE.Quit Set objIE = Nothing End Sub

noname#245127
質問者

お礼

返信ありがとうございます。 一つ一つのプログラミングがしっかりしていますね! 私は初心者なので、全てを理解することは難しかったのですが、一つずつ調べながら順を追って理解していきたいと思います。 とても感謝しております。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

OKWAVE16時着の質問とダブっているのではないか。 前質問なり本質問を適切に処理し、一本化すべきでしょう。 読者に迷惑をかける。このままだと結果的にOKWAVE規約違反となる? ===== それにVB(A)の質問をする前に、タグ打ちする方法での、WEBページづくりの初歩を勉強してみたら。HTML文の仕組みなどをまず勉強してから、本質問を考えるべきと思う。済んでいるのかな? XMLに関するhttp://gogodiet.net/z/xml/1.htmなどを一読して、HTMLと比較して考えると 勉強になるかもしれない。 (1)WEB上で、テーブル(TDタグなど)式で情報を提示しているもの以外は、望む情報項目をプログラムで見つけるのはコードが複雑になるように思う。常道はない? 目的のWEB記事をブラウザで出して、表示ーソースで出てくる内容(テキスト)の中から、求める項目をプログラムで見つけることになると思う。 (2)求める項目が1時点につき、多数ある場合にレスポンス時間は質問者の思っている許容範囲内か (3)WEB記事作成者(他社だよね)側で、長期的に見て、変更・更新されることについては大丈夫か。多少の変更で、ある項目を見つけるプログラムが変更せねばならない場合は、そのプログラムに頼るのは危険でしょうから。 ーー ついでに現在IEのVBA本は2種市販されている。 Googleで「vba ie 本」で照会すると、まず最初に出てくる記事に出ている。 質問者が持っている本以外の1本も、良かったら購入したら。

noname#245127
質問者

お礼

返信ありがとうございます。 ご指摘の通りです。 前に同じ内容の投稿をしたのですが、文章の不備があったため書き直しました。OKwaveの利用の初心者のため、投稿の削除方法がわからなかったので、連投してしまいました。 調べた時に、OKwaveでは、回答がついた質問は削除できないという規定があるとでてきて困惑してしまいました。 VBAでIEを操作するためには、ほかの分野の知識も必要みたいですね。 そちらも併せて検討してみようと思います。 アドバイスありがとうございました。

関連するQ&A

専門家に質問してみよう