Board logo

標題: [發問] 如何在網頁搜尋結果後,再按限時間按鈕 [打印本頁]

作者: Michelle-W    時間: 2016-7-25 17:44     標題: 如何在網頁搜尋結果後,再按限時間按鈕

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

IE.document.getElementsByName("btnG").Item.Click
作者: Michelle-W    時間: 2016-8-15 15:22

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


感恩

[attach]24941[/attach]
作者: GBKEE    時間: 2016-8-18 14:38

本帖最後由 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
複製代碼

作者: Michelle-W    時間: 2016-8-18 17:35

回復 3# GBKEE


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

回復 5# Michelle-W
2003沒有錯誤
可修正一下
  1. Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
複製代碼

作者: Michelle-W    時間: 2016-8-18 21:49

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

[attach]24972[/attach]
作者: GBKEE    時間: 2016-8-19 05:56

回復 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
複製代碼

作者: c_c_lai    時間: 2016-8-19 07:34

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

回復 7# GBKEE
我把過程用圖示來表達:
[attach]24977[/attach]
按確定後,隨即進入如下 (424) 畫面
[attach]24978[/attach]
願我今日眼睛手術順利、成功!
作者: c_c_lai    時間: 2016-8-19 07:42

回復 7# GBKEE
順手將檔案轉成 .xls 方便測試。
[attach]24979[/attach]
作者: GBKEE    時間: 2016-8-19 11:11

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


[attach]24980[/attach]
作者: Michelle-W    時間: 2016-8-19 17:33

回復 7# GBKEE


真的非常謝謝版主的協助
我會在持續研究測試~~~
感恩 ^^
作者: c_c_lai    時間: 2016-8-20 05:15

回復 10# GBKEE
[attach]24986[/attach]
作者: GBKEE    時間: 2016-8-20 09:48

回復 12# c_c_lai

3# 的程式碼已更正請再試試看
2003中一直沒這錯誤
作者: c_c_lai    時間: 2016-8-21 06:38

回復 13# GBKEE
[attach]24993[/attach]
作者: GBKEE    時間: 2016-8-21 07:08

回復 14# c_c_lai
眼睛看好了.
請參考看看
  1. ag:   '下載搜尋結果
  2.     Msg = False
  3.     FnWait 1   ''等待時間 :有錯誤時,調整等候的時間,待網頁整理完畢
  4.     '************************************************************
  5.   ' While IE.Busy Or IE.readyState <> 4:  DoEvents: Wend '確保網頁完整打開
  6.   '** While ** 2003, IE8 , Adsl 5M/384K.一直沒錯誤啊
  7.   
  8.   '*************************************************************
  9.     For Each E In IE.Document.ALL.TAGS("H3")
  10.         i = i + 1
  11.         Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
  12.         Sh.Cells(Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row + 1, 2) = E.ALL(0).HREF
  13.         Application.StatusBar = E.ALL(0).innertext
  14.     Next
複製代碼

作者: c_c_lai    時間: 2016-8-21 07:13

回復 15# GBKEE
現在是獨眼龍,一時間焦距無法集中,吃力!
等過一星期後再來好好研究一番,謝謝囉!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)