Board logo

標題: [發問] 關於看盤軟體DDE的資料來源問題.. [打印本頁]

作者: zboo    時間: 2011-5-26 10:27     標題: 關於看盤軟體DDE的資料來源問題..

大家好 小弟有個問題想問大家

於EXCEL中要抓取自已的看盤軟體SERVER的資料時,輸入下列公式即可於ECXEL抓到
抓取台積電成交價    =CATDDE|'STOCK<Q>2330  '!CurPrice
抓取台積電漲跌幅    =CATDDE|'STOCK<Q>2330  '!Change

那如果小弟想把上列的2330改為自動抓取 A99 這個欄位的數字的話 (也為2330)
請問程式該如何去串接呢? (日後節省時間,不用一個一個欄位改數字..)
小弟試了良久都無效
請高手前輩們幫忙一下
感激不盡!!

ps.抓取股票名稱的英文是什麼阿?Goole大找不到...
作者: luhpro    時間: 2011-5-26 22:45

本帖最後由 luhpro 於 2011-6-3 20:36 編輯

回復 1# zboo
假設是要設定到儲存格 A3
  Cells(3, 1).Formula = "=CATDDE|'STOCK<Q>" & CStr(Cells(99, 1)) & "  '!CurPrice"
基本上就是以 .Formula 來設定公式,
而公式內容本身就是一個字串. (用 & 或是 + 把需要放進去的文字都串起來就可以了)
需要留意的是它的空間比儲存格的值所佔空間還要小很多.

至於抓取股票名稱的英文是什麼?
這樣看該軟體如果定義,
以個人試用過一些報價軟體的經驗來看應該是 :
  =CATDDE|'STOCK<Q>2330  '!Name
或是
  =CATDDE|'STOCK<Q>2330  '!StockName
之類的敘述.

現在坊間一般的股票報價軟體應該都會提供類似 "匯出到 Excel 檔案",
或是 "拖曳到 Excel 檔案" 的功能來自動產生相關的 Excel 公式,
你可以透過這類方式把股票名稱匯出或拖曳出來以產生你要的公式.

回樓下 Hsieh 大大:
拍謝, 最近狂用 .NumberFormat 來儲存異動後的資料導致上面引用錯誤,
正確應該是用 .Formula 來設定公式,
謝謝你的指正.
作者: Hsieh    時間: 2011-5-26 23:14

回復 2# luhpro


    NumberFormat 是數值格式不是公式
作者: GBKEE    時間: 2011-5-27 07:10

本帖最後由 GBKEE 於 2011-5-31 10:01 編輯

回復 2# luhpro
Cellls(3, 1).Formula = "=CATDDE|'STOCK<Q>" & CStr(Cells(99, 1)) & "  '!CurPrice"
你的語法是正確的  但多了一個l
上式可改成 Cells(3, 1) = "=CATDDE|'STOCK<Q>" & Cells(99, 1) & "  '!CurPrice"

Formula 可省略    如[A10].Formula= 55   ->  [A10] = 55
& 運算子 用來對兩個運算式作強迫字串連結 所以CStr是多加上可不用
作者: luhpro    時間: 2011-5-30 22:00

本帖最後由 luhpro 於 2011-6-3 20:36 編輯
回復  luhpro
...
你的語法是正確的  但多了一個l
GBKEE 發表於 2011-5-27 07:10

其實那個 l 並不是多的喔,
你如果有仔細看可以看到首篇文章中確實每一行公式都有 l ,
因為我有注意到至少我看過的報價軟體在 "即時" 變更 Excel 上儲存格內容的公式裡都會有 l ,(不然就會無法隨時更新內容)
在 l 左邊大都是該報價軟體的名稱, 右邊才是細項資料.

另外會用 CStr 可能是因為自己用的有些亂,
有時用 + 有時又用 & 來串連字串,
我猜可能是我之前用 + 時Excel不讓連才會記成一定要用 CStr 轉換.
依你所說似乎只要有 & 應該就夠用串連字串了才是,
我不太懂什麼情形下才會需要用 + 來串連字串.(在儲存格內容可能有各種型態的情形下)

回復 6# Hsieh
嗯...我做出來的結果是 : (實際值為兩底線中間)
_ 3 _
_12_
_12_
_12_
看來 & 與 + 的作用對象是數字時結果才會有差異,
而當對象是 "字串" 時其實作用是相同的.

回復 7# GBKEE
晤...我還真沒發現到,謝謝你的指正,
我已經改好了.
作者: Hsieh    時間: 2011-5-30 22:19

回復 5# luhpro
執行底下程式就知道 & 跟 +的差別
  1. Sub nn()
  2. MsgBox 1 + 2
  3. MsgBox "1" + "2"
  4. MsgBox 1 & 2
  5. MsgBox "1" & "2"
  6. End Sub
複製代碼

作者: GBKEE    時間: 2011-5-31 10:03

回復 5# luhpro
是這個
Cellls(3, 1).Formula = "=CATDDE|'STOCK<Q>" & CStr(Cells(99, 1)) & "  '!CurPrice"
作者: 7777    時間: 2011-6-9 23:33

請問  可以衍伸   以 函數串接的方式處理嗎??
=CATDDE|'STOCK<Q>2330  '!CurPrice
Cellls(3, 1).Formula = "=CATDDE|'STOCK<Q>" & CStr(Cells(99, 1)) & "  '!CurPrice"
謝謝!!
作者: ginbow    時間: 2011-6-10 15:47

只要有接到你設的變數就可以了
作者: 7777    時間: 2011-6-11 13:12

回復 9 #  ginbow : 只要有接到你設的變數就可以了

1 請問  如果 變數同是 儲存格 A99  (設 2409 )
所以 A3內 函數設  =CATDDE|'STOCK<Q>" & CStr(Cells(99, 1)) & "  '!CurPrice  
結果不行 ㄝ

2  =CATDDE|'FUTOPT<FO>TXFF1     '!Open
     的F1 想改 E1 變數可以設   儲存格 A9的話    又該如何??

請高手前輩們幫忙一下  感激不盡!!
作者: 7777    時間: 2011-6-13 15:57

以下是 奇摩知識
http://tw.knowledge.yahoo.com/question/question?qid=1510080410714

http://tw.knowledge.yahoo.com/question/question?qid=1509020402077

http://tw.knowledge.yahoo.com/question/question?qid=1306042202537

[attach]6617[/attach]
以上方式 本人都試過 仍無法處理

我要問的是 可以直接用在 公式列上嗎? (而 不是程式的編輯器內 )
謝謝!!




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