Board logo

標題: Object資料怎麼轉到Worksheet! [打印本頁]

作者: chlungi    時間: 2011-4-17 13:48     標題: Object資料怎麼轉到Worksheet!

小弟用了下列的VBA去抓YAHOO的股市資料網頁

------------------------------------------------------------------------
Sub Webloading()

Dim i As Long
Dim IE As Object
Dim objElement As Object
Dim objCollection As Object

Set IE = CreateObject("InternetExplorer.Application")

IE.Visible = False

IE.Navigate "http://tw.stock.yahoo.com/"

Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

Set objCollection = IE.document.getElementsByTagName("input")
i = 0
While i < objCollection.Length
If objCollection(i).Name = "stock_id" Then
objCollection(i).Value = "2330"
Else
If objCollection(i).Type = "submit" And _
objCollection(i).Name = "xSubmit" Then
Set objElement = objCollection(i)
End If
End If
i = i + 1
Wend

objElement.Click
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop

IE.Visible = True
Set objElement = Nothing
Set objCollection = Nothing

End Sub
-------------------------------------------------------------------------

想請教各位高手
如何才能把IE抓到的網頁資料中某個table
像iqy指定的一樣轉到工作表中啊~

大感謝!!!
作者: GBKEE    時間: 2011-4-19 15:43

回復 1# chlungi
試試看

[attach]5542[/attach]


  1. Sub 股市資料網頁()
  2.     Dim Rng(1) As Range, i As Integer
  3.     With ActiveSheet
  4.         Set Rng(0) = .[C1]          '股票代號輸入處
  5.         Set Rng(1) = .[B4]          '股票數據存放起始點
  6.     End With
  7.     With CreateObject("InternetExplorer.Application")
  8.         .Navigate ("http://tw.stock.yahoo.com/q/q?s=" & Rng(0))
  9.         Do While .Busy = True
  10.         Loop
  11.         DoEvents
  12.         For i = 0 To .Document.all.Length - 1
  13.             If .Document.all(i).tagName = "TD" And Len(.Document.all(i).innerText) > 3 Then
  14.                
  15.                 If .Document.all(i).innerText Like "****/**/**" Then Rng(0).Offset(1, -1) = .Document.all(i).innerText   '取得資料的日期
  16.                         
  17.                 If .Document.all(i).innerText Like Rng(0) & "*" Then
  18.                     Rng(1).Value = Mid(.Document.all(i).innerText, 1, InStr(.Document.all(i).innerText, "加") - 2)  '取得股票代號名稱
  19.                     Set Rng(1) = Rng(1).Offset(, 1)                   '設定下個位址
  20.                 ElseIf Len(.Document.all(i).innerText) <= 5 Then
  21.                     Rng(1).Value = .Document.all(i).innerText          '取得股票數據
  22.                     Set Rng(1) = Rng(1).Offset(, 1)                    '設定下個位址
  23.             End If
  24.             End If
  25.         Next
  26.         .Quit
  27.     End With
  28. End Sub
複製代碼

作者: awzinc    時間: 2015-11-23 15:13

嘗試使用更新股票代號的vba,但發現一直出現"400",不曉得是甚麼問題…




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