Board logo

標題: [發問] 使用元大證Yeswin的RTD元件即時更新股價問題?? [打印本頁]

作者: jasonwu0114    時間: 2014-1-14 17:50     標題: 使用元大證Yeswin的RTD元件即時更新股價問題??

請問
之前都使用元大Yeswin來即時更新股價
最近改用RTD元件
但在沒有開啟RTD元件下打開檔案
要更新的欄位都出現""?沒有資料""
但是之前用Yeswin
即使在沒有開啟Yeswin下打開檔案
要更新欄位還會""出現最後更新資料""
RTD有辦法這樣嗎?????
另外在已開啟RTD元件下
要再開啟另一檔案有辦法選擇要或不要使用RTD元件更新嗎??
作者: c_c_lai    時間: 2014-1-15 08:11

回復 1# jasonwu0114
有篇文章可供參考、及思維:
dde | Kenmingの鮮思維
作者: owen06    時間: 2014-1-15 10:23

回復 1# jasonwu0114

是的,如果不開啟RTD元件就會出現"?沒有資料",
另外在已開啟RTD元件下是沒辦法選擇要或不要使用RTD元件更新的,
因為就算你選擇不要更新,他還是會強制把你的資料更新到現在的報價....

所以不管是你不開RTD,或是選擇不要更新資料,都無法達成你要看前一日的報價的需求,
因此唯一的辦法就是寫個程式,讓他每日產生一個新工作表或檔案,並且內容全部變成值而不帶公式,
應該只有這個辦法了。
作者: GBKEE    時間: 2014-1-15 19:22

回復 1# jasonwu0114
自製看盤

[attach]17264[/attach]

ThisWorkbook 程式碼
  1. Option Explicit
  2. Dim ie()  As Object
  3. Const Sh = "看盤"  '指定工作表名稱
  4. Private Sub Workbook_Open()
  5.     Dim i As Integer, T As Date
  6.     Workbook_BeforeClose False
  7.     With Sheets(Sh)
  8.         Application.StatusBar = "網頁下載中..."
  9.         For i = 2 To .UsedRange.Columns(1).Rows.Count  '股票代號
  10.             ReDim Preserve ie(2 To i)
  11.             If .Cells(i, "A") <> "" And IsNumeric(.Cells(i, "A")) And Len(.Cells(i, "A")) >= 4 Then
  12.                 Set ie(i) = CreateObject("InternetExplorer.Application")
  13.                 ie(i).Navigate "http://newmis.twse.com.tw/stock/fibest.jsp?stock=" & .Cells(i, "A")
  14.                 DoEvents
  15.                 Application.StatusBar = "下載... " & .Cells(i, "A")
  16.                 ie(i).Visible = False
  17.             Else
  18.                 Set ie(i) = Nothing
  19.                 .UsedRange.Rows(i).Offset(, 1) = ""
  20.             End If
  21.         Next
  22.     End With
  23.     T = Time + #12:00:05 AM#
  24.     If Time < #9:00:00 AM# Then T = #9:00:00 AM#
  25.     Application.OnTime T, "ThisWorkbook.所有股價"
  26. End Sub
  27. Private Sub 即時股價(R As Integer)
  28.     Dim Element As Object, C As Integer
  29.     Application.EnableEvents = False
  30.     With Sheets(Sh)
  31.         If Not ie(R) Is Nothing Then
  32.             With ie(R)
  33.                 Do While .Busy Or .ReadyState <> 4: Loop
  34.                 Set Element = .document.getElementsByTagName("TABLE")(1) '
  35.             End With
  36.             For C = 0 To Element.Rows(1).Cells.Length - 1
  37.                 .Cells(R, C + 2) = Element.Rows(1).Cells(C).innertext
  38.             Next
  39.         Else
  40.             .UsedRange.Rows(R).Offset(, 1) = ""
  41.         End If
  42.     End With
  43.     Application.EnableEvents = True
  44. End Sub

  45. Private Sub 所有股價()
  46.     Dim R As Integer
  47.     If Time >= #1:30:00 PM# Then
  48.         Workbook_BeforeClose False
  49.         Application.StatusBar = "  已收盤!!!"
  50.         Exit Sub
  51.     End If
  52.     For R = 2 To UBound(ie)
  53.         即時股價 R
  54.     Next
  55.     Application.OnTime Time + #12:00:02 AM#, "ThisWorkbook.所有股價"
  56.     Application.StatusBar = Time & vbTab & "更新完成"
  57. End Sub
  58. Private Sub Workbook_BeforeClose(Cancel As Boolean)
  59.     Dim e As Variant
  60.     On Error Resume Next
  61.     For Each e In ie
  62.        e.Quit
  63.        Set e = Nothing
  64.     Next
  65. End Sub
  66. Private Sub Workbook_SheetChange(ByVal Wsh As Object, ByVal Target As Range)
  67.     If Wsh.Name = Sh Then
  68.         If Target.Column = 1 And Target.Row > 1 Then Workbook_Open
  69.     End If
  70. End Sub
複製代碼

作者: jasonwu0114    時間: 2014-1-16 09:51

感謝
各位前輩的意見
小弟先來消化研究一下
謝謝
作者: weimr    時間: 2014-3-15 14:41

新手先來觀摩,感謝分享....
作者: heavenweaver    時間: 2014-3-16 14:09

回復  jasonwu0114
自製看盤
ThisWorkbook 程式碼
GBKEE 發表於 2014-1-15 19:22
  1.         Workbook_BeforeClose False
  2.       '[color=Red] 增加欄位名稱[/color]
  3.         Worksheets(Sh).Range("A1").Value = "股票代碼"
  4.         Worksheets(Sh).Range("B1").Value = "最近成交價"
  5.         Worksheets(Sh).Range("C1").Value = "漲跌價差(百分比)"
  6.         Worksheets(Sh).Range("D1").Value = "當盤成交量"
  7.         Worksheets(Sh).Range("E1").Value = "累積成交量"
  8.         Worksheets(Sh).Range("F1").Value = "揭示買價"
  9.         Worksheets(Sh).Range("G1").Value = "揭示買量"
  10.         Worksheets(Sh).Range("H1").Value = "揭示賣價"
  11.         Worksheets(Sh).Range("I1").Value = "揭示賣量"
  12.         Worksheets(Sh).Range("J1").Value = "開盤"
  13.         Worksheets(Sh).Range("K1").Value = "最高"
  14.         Worksheets(Sh).Range("L1").Value = "最低"
  15.         Worksheets(Sh).Range("M1").Value = "說明"

  16.         With Sheets(Sh)
複製代碼

作者: bobomi    時間: 2014-3-17 17:09

請問用 RTD 會比 DDE 方便嗎
作者: c590524    時間: 2015-11-27 16:13

大大真的很厲害
正在消化知識中
謝謝




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