返回列表 上一主題 發帖

[發問] 如何在網頁搜尋結果後,再按限時間按鈕

[發問] 如何在網頁搜尋結果後,再按限時間按鈕

請教各位前輩們~
以VBA開啟IE網頁做網路搜尋的方式有很多篇幅
我想請教一下,
如果是搜尋之後,想要按頁面左邊的"過去1個月"
有辦法做到嗎?
我用按下"搜尋"的程式碼(如下)來改寫,都沒反應~~^^"

IE.document.getElementsByName("btnG").Item.Click

關於網路搜尋與匯入的問題
目前的程式檔執行會出現錯誤
我的直覺是因為程式介面已經在EXCEL了,不知道怎麼再回去剛剛打開的IE才會出現錯誤...
請問有前輩可以幫忙看看與修改嗎?
想要可以控制IE進下一頁 然後匯入 再下一頁 (至少5個循環)
匯入之後方便做紀錄與區分


感恩

Data.rar (35.13 KB)

TOP

本帖最後由 GBKEE 於 2016-8-20 09:46 編輯

回復 2# Michelle-W
google  會有流量管制限制資料的下載
試試看
  1. Option Explicit
  2. Sub 資料搜尋()
  3.     Dim IE As Object, MyState As String, E As Object
  4.     Dim Sh As Worksheet, Msg As Boolean, i As Integer
  5.     With Workbooks.Open(ThisWorkbook.Path & "\資料處理.xlsm")  '打開另一個excel做為資料儲存
  6.         Set Sh = .Sheets("SHEET2")
  7.         Sh.Cells.Clear
  8.     End With
  9.     Set IE = CreateObject("InternetExplorer.Application")
  10.     With IE
  11.         .Visible = True 'False
  12.         .Navigate ("https://www.google.com")
  13.     End With
  14.     MyState = ThisWorkbook.Sheets("sheet1").Range("A2") 'B2為關鍵字,打開IE
  15.     While IE.Busy Or IE.readyState <> 4:  DoEvents: Wend '確保網頁完整打開
  16.     For Each E In IE.Document.getelementsbytagname("input")
  17.         If E.Name = "q" Then: E.Value = MyState: Exit For  '找到input,填入輸入值
  18.     Next
  19.     While IE.Busy Or IE.readyState <> 4:  DoEvents: Wend '確保網頁完整打開
  20.     IE.Document.getElementsByName("btnG").Item.Click '按下搜尋紐
  21. ag:   '下載搜尋結果
  22.     Msg = False
  23.     While IE.Busy Or IE.readyState <> 4:  DoEvents: Wend '確保網頁完整打開
  24.     'FnWait (0.7)  '等待時間 :等候網頁整理完畢
  25.     Do While IE.Busy: DoEvents: Loop
  26.     For Each E In IE.Document.ALL.TAGS("H3")
  27.         i = i + 1
  28.         Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
  29.         Sh.Cells(Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row + 1, 2) = E.ALL(0).HREF
  30.         Application.StatusBar = E.ALL(0).innertext
  31.     Next
  32.     For Each E In IE.Document.ALL.TAGS("span")
  33.         If E.innertext = "下一頁" Then
  34.             Msg = True
  35.             E.Click
  36.             Exit For
  37.         End If
  38.     Next
  39.     If Msg Then GoTo ag
  40.     If IE.LocationURL Like "https://ipv4.google.com/sorry/IndexRedirect?*" Then  '** 被 google  流量管制
  41.         MsgBox "請先到 IE 輸入:驗證數字,再回到Excel 按下確定鍵 ", , "google  流量管制"
  42.         GoTo ag
  43.     End If
  44.     Application.StatusBar = MyState & " 共 google " & i
  45.     IE.Quit
  46. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 3# GBKEE


對不起!! 我剛剛沒看好,請忽略我上一篇的留言,我刪除不掉了><"
我想請問一下執行的時候,
會出現錯誤91,在這一句
Sh.Cells(Range("A" & Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
請問您執行的時候會嗎?
還是我又哪裡沒看清楚了QQ"""

TOP

回復 5# Michelle-W
2003沒有錯誤
可修正一下
  1. Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# GBKEE
還是出現錯誤QQ
我截圖請您幫忙看看
非常感謝您!!!

Question.jpg
2016-8-18 21:48

TOP

回復 6# Michelle-W

3#的程式碼有誤已更正 因少了With
  1. With Workbooks.Open(ThisWorkbook.Path & "\資料處理.xlsm")  '打開另一個excel做為資料儲存
  2.     Set Sh = .Sheets("SHEET1")
  3.     Sh.Cells.Clear
  4. End With
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 c_c_lai 於 2016-8-19 07:39 編輯

回復 7# GBKEE
我把過程用圖示來表達:
A0B.png
2016-8-19 07:33

按確定後,隨即進入如下 (424) 畫面
A0D.png
2016-8-19 07:34

願我今日眼睛手術順利、成功!

TOP

回復 7# GBKEE
順手將檔案轉成 .xls 方便測試。
Data(xls).rar (56.59 KB)

TOP

回復 9# c_c_lai
更新3#的程式碼
2003版 執行如下圖


未命名.GIF
2016-8-19 11:11
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題