Board logo

標題: 如何下載SGX NLT 期貨及選擇權資料 [打印本頁]

作者: chwqk    時間: 2015-1-22 19:30     標題: 如何下載SGX NLT 期貨及選擇權資料

http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/derivatives/Nlt

如何以VBA 按"HERE"
Please click HERE to download the text file.
下載NLT_FUT.UNL 及 NLT_OPT.UNL
作者: joey0415    時間: 2015-1-26 00:06

回復 1# chwqk

post的內容太多,改用另一種方法
  1. Sub SGX_NLT_期貨及選擇權資料()
  2.     Dim URL As String, shts As Worksheet
  3.     Dim x As Variant, xi As Integer, A As Object, xlHtm
  4.     Set shts = ActiveSheet '  '("工作表2")
  5.     shts.Cells.Clear
  6.     URL = "http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/derivatives/Nlt"
  7.     With CreateObject("InternetExplorer.Application")
  8.         .Visible = True     '  是否顯示 IE
  9.         .Navigate URL
  10.          Do While .ReadyState <> 4 Or .Busy
  11.                 DoEvents
  12.             Loop
  13.         Application.Wait Now + TimeValue("00:00:06")

  14.         xlHtm = .Document.body.innerHTML                '儲存
  15.         Set A = .Document.getElementsBytagname("table")
  16.         For xi = 116 To 118 Step 2
  17.             .Document.body.innerHTML = A(xi).outerHTML
  18.             .ExecWB 17, 2       '  Select All
  19.             .ExecWB 12, 2       '  Copy selection
  20.             With shts
  21.                 .Range("A" & .[A1048576].End(xlUp).Row + 1).Select
  22.                 .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  23.             End With
  24.             .Document.body.innerHTML = xlHtm                  '還原
  25.         Next xi
  26.         shts.Cells.EntireColumn.AutoFit     '  自動調整欄寬
  27.         .Quit
  28.     End With
  29. End Sub
複製代碼

作者: chwqk    時間: 2015-1-29 08:43     標題: RE: 如何下載SGX NLT 期貨及選擇權資料

With shts
                .Range("A" & .[A1048576].End(xlUp).Row + 1).Select
                .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
            End With

經測試 此段執行出錯
               請問
               .Range("A" & .[A1048576].End(xlUp).Row + 1).Select
         其中 1048576 是否因為超出 excel工作表列數 而出錯
作者: joey0415    時間: 2015-1-29 12:29

回復 3# chwqk

舊版改成

.Range("A" & .[A65535].End(xlUp).Row + 1).Select
作者: chwqk    時間: 2015-1-29 20:21

謝謝 JOEY0415
已可以使用

但想了解
    For xi = 116 To 118 Step 2
  為何是 xi = 116 To 118

另外 Step 2 是甚麼意思  ??
作者: chwqk    時間: 2015-6-18 00:25

請教最近sgx又改版
http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/derivatives/Nlt
http://www.sgx.com/wps/portal/sgxweb_ch/home/marketinfo/derivatives/Nlt

抓不到資料
如何修正
作者: joey0415    時間: 2015-6-20 21:48

回復 6# chwqk
  1. Sub SGX_NLT_1()
  2.     Dim URL As String, shts As Worksheet
  3.     Dim x As Variant, xi As Integer, A As Object, xlHtm
  4.     Set shts = ActiveSheet '  '("工作表2")
  5.     shts.Cells.Clear
  6.     URL = "http://www.sgx.com/wps/portal/sgxweb/home/marketinfo/derivatives/Nlt"
  7.     With CreateObject("InternetExplorer.Application")
  8.         .Visible = True     '  是否顯示 IE
  9.         .Navigate URL
  10.          Do While .ReadyState <> 4 Or .Busy
  11.                 DoEvents
  12.             Loop
  13.         Application.Wait Now + TimeValue("00:00:06")

  14.         xlHtm = .Document.body.innerHTML                '儲存
  15.         Set A = .Document.getElementsBytagname("table")
  16.         For xi = 74 To 74
  17.             .Document.body.innerHTML = A(xi).outerHTML
  18.             .ExecWB 17, 2       '  Select All
  19.             .ExecWB 12, 2       '  Copy selection
  20.             With shts
  21.                 .Range("A" & .[A1048576].End(xlUp).Row + 1).Select
  22.                 .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  23.             End With
  24.             .Document.body.innerHTML = xlHtm                  '還原
  25.         Next xi
  26.         shts.Cells.EntireColumn.AutoFit     '  自動調整欄寬
  27.         .Quit
  28.     End With
  29. End Sub
複製代碼
  1. Sub SGX_NLT_2()
  2.     Dim URL As String, shts As Worksheet
  3.     Dim x As Variant, xi As Integer, A As Object, xlHtm
  4.     Set shts = ActiveSheet '  '("工作表2")
  5.     shts.Cells.Clear
  6.     URL = "http://www.sgx.com/wps/portal/sgxweb_ch/home/marketinfo/derivatives/Nlt"
  7.     With CreateObject("InternetExplorer.Application")
  8.         .Visible = True     '  是否顯示 IE
  9.         .Navigate URL
  10.          Do While .ReadyState <> 4 Or .Busy
  11.                 DoEvents
  12.             Loop
  13.         Application.Wait Now + TimeValue("00:00:06")

  14.         xlHtm = .Document.body.innerHTML                '儲存
  15.         Set A = .Document.getElementsBytagname("table")
  16.         For xi = 113 To 115 Step 2
  17.             .Document.body.innerHTML = A(xi).outerHTML
  18.             .ExecWB 17, 2       '  Select All
  19.             .ExecWB 12, 2       '  Copy selection
  20.             With shts
  21.                 .Range("A" & .[A1048576].End(xlUp).Row + 1).Select
  22.                 .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
  23.             End With
  24.             .Document.body.innerHTML = xlHtm                  '還原
  25.         Next xi
  26.         shts.Cells.EntireColumn.AutoFit     '  自動調整欄寬
  27.         .Quit
  28.     End With
  29. End Sub
複製代碼





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