[英]Using Data from Web, how to login?
我有一個使用“ Web數據”功能的宏。 我已經登錄了要從中提取數據的網站(在Internet Explorer中)-但是我在Excel中得到的結果只是告訴我我沒有登錄。
是否有通過Excel登錄“來自網絡的數據”的特殊方法? 我知道它是有效的,因為我使用了Macro Recorder來學習Excel如何獲取數據-並手動進行,該網站要求我登錄“ Excel IE瀏覽器窗口” ...但是已經過去了一個多小時,所以我已注銷。 如何再次登錄以使用它?
如果有幫助,請參見以下適用的數據提取代碼(登錄后該網址可以正常運行):
With ActiveSheet.QueryTables.Add(Connection:="URL;" & theURL, Destination:=webInfoWS.Range("$A$2"))
.name = cel.Value & " hex"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "3"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
同時,我發現了一個解決方法(主要是通過該線程 ):
在Debug.Print "Opening " & theURL
以及With ActiveSheet.QueryTables.Add(...)
之前添加此內容
''' Log in to the web stuff
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
.Navigate theURL
Do Until .READYSTATE = 4
DoEvents
Loop
If Left(.Document.Title, 5) <> "Welcome!" Then
.Document.all.Item("username").Value = "My User Name"
.Document.all.Item("password").Value = "MyPassword"
.Document.forms(0).submit
End If
' .Quit
End With
''''''
這實際上是打開IE窗口,然后(自動)輸入我的用戶名和密碼,然后提交。
但是,如果我再次運行宏(這意味着我已經登錄),這會給我一個錯誤,因為沒有用戶名/密碼輸入表格。
關於如何解決的想法-使用On Error Goto Next
,但我不喜歡使用它,但這可能是最好的選擇。 我想我會改為嘗試獲取Window標題(通過HTML)並檢查是否為登錄表單...
編輯:關於如何知道.Item("____")
是"username"
和"password"
的.Item("____")
。 這只是來自HTML Input ID標記:
您會在我發現它的帖子中注意到, .Item()
的文本是不同的-我認為是因為HTML ID也不同。
編輯2:這不起作用! 我能夠登錄, 在 IE中看到的網頁,但是當我到達.Refresh BackgroundQuery:=False
,得到的信息是短信說我需要登錄:/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.