Board logo

標題: [發問] EXCEL VBA 匯入PCHOME網頁資料 [打印本頁]

作者: s13983037    時間: 2014-12-6 23:26     標題: EXCEL VBA 匯入PCHOME網頁資料

各位前輩 你們好

我想使用外部網頁資料匯入 "http://pchome.megatime.com.tw/stock/sid9907.html" 匯到EXCEL 中 但是VBA沒有反應

有前輩可以幫忙解決這個問題嗎
作者: GBKEE    時間: 2014-12-7 08:31

回復 1# s13983037
  1. Option Explicit
  2. Sub Ex_Pchome()
  3.     Dim E As Object, i As Integer, ii As Integer, k As Integer
  4.     Dim xadte As Date
  5.     xadte = DateAdd("yyyy", -1, Date)  '日期(起):
  6.     With CreateObject("InternetExplorer.Application")
  7.         .Visible = True
  8.         .Navigate "http://pchome.megatime.com.tw/stock/sid9907.html"
  9.         Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  10.         Set E = .document.getElementsByTAGName("TABLE")(4)
  11.         ActiveSheet.UsedRange.Clear
  12.         For i = 0 To E.Rows.Length - 1
  13.             k = k + 1
  14.             For ii = 0 To E.Rows(i).Cells.Length - 1
  15.                 Cells(k, ii + 1) = E.Rows(i).Cells(ii).INNERTEXT
  16.             Next
  17.         Next
  18.         .Quit        '關閉網頁
  19.     End With
  20. End Sub
複製代碼

作者: s13983037    時間: 2014-12-7 12:24

回復 2# GBKEE

GBKEE前輩您好 小弟初學 VBA 針對以下程式碼想加以了解
      xadte = DateAdd("yyyy", -1, Date)  '日期(起):
      '執行此行的目的是??
    With CreateObject("InternetExplorer.Application")                                          
      '此行是否開啟InternetExplorer APP ??
        .Visible = True                                                                                                                          
        .Navigate "http://pchome.megatime.com.tw/stock/sid9907.html"           
      '此行是將InternetExplorer輸入網址嗎??
        Do While .Busy Or .ReadyState <> 4: DoEvents: Loop                                 
        '此行當中的 .Busy Or .ReadyState <> 4: DoEvents: Loop甚麼意思??
        Set E = .document.getElementsByTAGName("TABLE")(4)                           
   '此行是定義甚麼意思
    End With
作者: GBKEE    時間: 2014-12-7 13:30

回復 3# s13983037
VBA 程式碼看不懂 可多看 VBA 的說明
  1. DateAdd 函數 傳回值為一 Variant (Date),內容為某個基準日期加上特定時間間隔單位後的日期。
複製代碼
  1. CreateObject 函數 建立並傳回對於 ActiveX 物件的引用
複製代碼
  1. Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  2. 'Do While 執行條件 成立一直執行迴圈,不成立離開迴圈  
複製代碼
  1. Set E = .document.getElementsByTAGName("TABLE")(4)
複製代碼
變數指定為物件須加上Set
網頁文件的元素TAGName為"TABLE"物件集合第5個子物件(0,1,2,3,4)
作者: kof0018    時間: 2015-10-2 13:05

請問一下 GBKEE版主大
我是一個新手, 剛開始接觸VBA, 想請教一下關於parse 網頁的一些方法
像是您寫的 下面方式, 是不是有參考網頁可以讓我學習一下呢?
Set E = .document.getElementsByTAGName("TABLE")(4)
我是希望自己可以完整的parse類似台鐵或是Gmail的網頁
目前已經自學到, 可以用VBA幫我自動登入Gmail
但是登入後的相關參數卻是不熟

先多謝了!!!
作者: GBKEE    時間: 2015-10-2 16:54

回復 5# kof0018
可參考這裡,找出網頁上的元素
http://forum.twbts.com/thread-13669-1-1.html




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