標題:
[發問]
使用元大證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 程式碼
Option Explicit
Dim ie() As Object
Const Sh = "看盤" '指定工作表名稱
Private Sub Workbook_Open()
Dim i As Integer, T As Date
Workbook_BeforeClose False
With Sheets(Sh)
Application.StatusBar = "網頁下載中..."
For i = 2 To .UsedRange.Columns(1).Rows.Count '股票代號
ReDim Preserve ie(2 To i)
If .Cells(i, "A") <> "" And IsNumeric(.Cells(i, "A")) And Len(.Cells(i, "A")) >= 4 Then
Set ie(i) = CreateObject("InternetExplorer.Application")
ie(i).Navigate "http://newmis.twse.com.tw/stock/fibest.jsp?stock=" & .Cells(i, "A")
DoEvents
Application.StatusBar = "下載... " & .Cells(i, "A")
ie(i).Visible = False
Else
Set ie(i) = Nothing
.UsedRange.Rows(i).Offset(, 1) = ""
End If
Next
End With
T = Time + #12:00:05 AM#
If Time < #9:00:00 AM# Then T = #9:00:00 AM#
Application.OnTime T, "ThisWorkbook.所有股價"
End Sub
Private Sub 即時股價(R As Integer)
Dim Element As Object, C As Integer
Application.EnableEvents = False
With Sheets(Sh)
If Not ie(R) Is Nothing Then
With ie(R)
Do While .Busy Or .ReadyState <> 4: Loop
Set Element = .document.getElementsByTagName("TABLE")(1) '
End With
For C = 0 To Element.Rows(1).Cells.Length - 1
.Cells(R, C + 2) = Element.Rows(1).Cells(C).innertext
Next
Else
.UsedRange.Rows(R).Offset(, 1) = ""
End If
End With
Application.EnableEvents = True
End Sub
Private Sub 所有股價()
Dim R As Integer
If Time >= #1:30:00 PM# Then
Workbook_BeforeClose False
Application.StatusBar = " 已收盤!!!"
Exit Sub
End If
For R = 2 To UBound(ie)
即時股價 R
Next
Application.OnTime Time + #12:00:02 AM#, "ThisWorkbook.所有股價"
Application.StatusBar = Time & vbTab & "更新完成"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim e As Variant
On Error Resume Next
For Each e In ie
e.Quit
Set e = Nothing
Next
End Sub
Private Sub Workbook_SheetChange(ByVal Wsh As Object, ByVal Target As Range)
If Wsh.Name = Sh Then
If Target.Column = 1 And Target.Row > 1 Then Workbook_Open
End If
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
Workbook_BeforeClose False
'[color=Red] 增加欄位名稱[/color]
Worksheets(Sh).Range("A1").Value = "股票代碼"
Worksheets(Sh).Range("B1").Value = "最近成交價"
Worksheets(Sh).Range("C1").Value = "漲跌價差(百分比)"
Worksheets(Sh).Range("D1").Value = "當盤成交量"
Worksheets(Sh).Range("E1").Value = "累積成交量"
Worksheets(Sh).Range("F1").Value = "揭示買價"
Worksheets(Sh).Range("G1").Value = "揭示買量"
Worksheets(Sh).Range("H1").Value = "揭示賣價"
Worksheets(Sh).Range("I1").Value = "揭示賣量"
Worksheets(Sh).Range("J1").Value = "開盤"
Worksheets(Sh).Range("K1").Value = "最高"
Worksheets(Sh).Range("L1").Value = "最低"
Worksheets(Sh).Range("M1").Value = "說明"
With Sheets(Sh)
複製代碼
作者:
bobomi
時間:
2014-3-17 17:09
請問用 RTD 會比 DDE 方便嗎
作者:
c590524
時間:
2015-11-27 16:13
大大真的很厲害
正在消化知識中
謝謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)