標題:
[發問]
如何在網頁搜尋結果後,再按限時間按鈕
[打印本頁]
作者:
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 會有流量管制限制資料的下載
試試看
Option Explicit
Sub 資料搜尋()
Dim IE As Object, MyState As String, E As Object
Dim Sh As Worksheet, Msg As Boolean, i As Integer
With Workbooks.Open(ThisWorkbook.Path & "\資料處理.xlsm") '打開另一個excel做為資料儲存
Set Sh = .Sheets("SHEET2")
Sh.Cells.Clear
End With
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True 'False
.Navigate ("https://www.google.com")
End With
MyState = ThisWorkbook.Sheets("sheet1").Range("A2") 'B2為關鍵字,打開IE
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend '確保網頁完整打開
For Each E In IE.Document.getelementsbytagname("input")
If E.Name = "q" Then: E.Value = MyState: Exit For '找到input,填入輸入值
Next
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend '確保網頁完整打開
IE.Document.getElementsByName("btnG").Item.Click '按下搜尋紐
ag: '下載搜尋結果
Msg = False
While IE.Busy Or IE.readyState <> 4: DoEvents: Wend '確保網頁完整打開
'FnWait (0.7) '等待時間 :等候網頁整理完畢
Do While IE.Busy: DoEvents: Loop
For Each E In IE.Document.ALL.TAGS("H3")
i = i + 1
Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
Sh.Cells(Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row + 1, 2) = E.ALL(0).HREF
Application.StatusBar = E.ALL(0).innertext
Next
For Each E In IE.Document.ALL.TAGS("span")
If E.innertext = "下一頁" Then
Msg = True
E.Click
Exit For
End If
Next
If Msg Then GoTo ag
If IE.LocationURL Like "https://ipv4.google.com/sorry/IndexRedirect?*" Then '** 被 google 流量管制
MsgBox "請先到 IE 輸入:驗證數字,再回到Excel 按下確定鍵 ", , "google 流量管制"
GoTo ag
End If
Application.StatusBar = MyState & " 共 google " & i
IE.Quit
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沒有錯誤
可修正一下
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
With Workbooks.Open(ThisWorkbook.Path & "\資料處理.xlsm") '打開另一個excel做為資料儲存
Set Sh = .Sheets("SHEET1")
Sh.Cells.Clear
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
眼睛看好了.
請參考看看
ag: '下載搜尋結果
Msg = False
FnWait 1 ''等待時間 :有錯誤時,調整等候的時間,待網頁整理完畢
'************************************************************
' While IE.Busy Or IE.readyState <> 4: DoEvents: Wend '確保網頁完整打開
'** While ** 2003, IE8 , Adsl 5M/384K.一直沒錯誤啊
'*************************************************************
For Each E In IE.Document.ALL.TAGS("H3")
i = i + 1
Sh.Cells(Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1, 1) = E.ALL(0).innertext
Sh.Cells(Sh.Range("B" & Sh.Rows.Count).End(xlUp).Row + 1, 2) = E.ALL(0).HREF
Application.StatusBar = E.ALL(0).innertext
Next
複製代碼
作者:
c_c_lai
時間:
2016-8-21 07:13
回復
15#
GBKEE
現在是獨眼龍,一時間焦距無法集中,吃力!
等過一星期後再來好好研究一番,謝謝囉!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)