返回列表 上一主題 發帖

[發問] 請問如何將以連接EXCEL的DDE數據每分鐘紀錄下來?

各位大家好,

因為小弟沒有VBA經驗, 在拜讀以上文章之後還是霧煞煞.
不知道要把DDE的資料記錄下來的方法除了使用VBA之外,是否可以使用EXCEL函數來達成呢 ?

TOP

早上發文後看了許久EXCEL的書籍, 看起來函數應該無法達成將DDE每筆紀錄在Excel的功能,
還是需要靠VBA.

我想要達到的功能與發問者"J1221"先生不太一樣(我使用EasyWin DDE),
以下為我的條件問題, 希望各位高手可以解答.
1.抓取EasyWin DDE中的時間當作數值紀錄標準, 如附件"C6"
2.依照C6的時間帶出每分鐘的買賣資料"E6" & "F6" (非本機電腦時間)
3.將E6 & F6每分鐘的時間紀錄到I2 ~ I273 & J2 ~ J273

逛了一下午的書局, 簡單的寫了一個Sample.
因為我不知道要怎麼設回圈, 如果按照最簡單的方式, 每一分鐘判斷一次, 要寫271個判斷式.
不知道各位高手是否有方法可以減少程式碼的方式呢 ?

謝謝. (隨信附上我的EXCEL檔)
DDE-Test.zip (9.66 KB)

TOP

本帖最後由 skybbs 於 2011-1-19 20:22 編輯

回復 26# Hsieh

感謝Hsieh的回覆, 因為昨天我想試一下我的想法是否可行, 所以把判斷式都Key了.
今天一早看到謝大的回覆, 有下面幾點與早上測試VBA部份的問題希望謝大可以撥空回覆.

1. 我把從DDE時間格改為B6, 從09:00開始每一分鐘把D6&E6的資料Copy到H2.I2.
    09:01時Copy到H3.I3, 09:02時Copy到H4.I4依此類推.
    請問謝大的程式要怎麼可以套到我的VBA程式裡 ? 有哪些部份可以刪除的 ?

2. 在我的Sheet1裡都是資料, 所以我把sheet1的資料在Sheet2裡畫圖, 但是發現如果畫面沒有在Sheet1時VBA的程式就不會記錄資料.
    請問這個有解嗎 ?

3. 這個程式要多久(目前我設定3秒)執行一次會比較恰當呢 ?

隨信附上EXCEL檔案, 煩請謝大幫忙看一下. 謝謝.
DDE-Test v1.zip (43.26 KB)

TOP

Hi Jerry,

今天我用我的VBA在作測試, 發現有如下動作時會無法記錄資料, 給您參考.

1. 如果不是在該sheet時, VBA好像不會動作. (最小化OK)
2. 如果開另外一個Excel在做別的事情時, 好像VBA也不會動作.

以上是我今天的發現, 提供參考.

TOP

Hello Jerry,

我知道我的程式為什麼會缺資料了, 應該只要加入如下碼應該就可以解決了.
Worksheets("sheet1").Activate

TOP

經過 #25樓, 謝大的指導與這幾天的K書, 終於把程式內容縮短且簡單改寫.
但是會遇到如下問題:

1.  如果同時有開其他EXCEL檔時, 且沒有加上 "Worksheets("sheet1").Activate"的話Data無法Update且會有錯誤.
     但是如果加上了"Worksheets("sheet1").Activate", 開第二個或第三個以上的EXCEL檔時會依照時間一直跳到跑到Sheet1.
     Q: 請問在同時開兩個以上的EXCEL時, 有沒有可以讓資料自動update, 且不要一直跑道Sheet1的方法 ?

2. 因為參照時間的儲存格在09:00:00時所顯示的是90000, 一直到10:00:00時才顯示100000
    若使用 " t = Format(TimeValue(Format([C6], "00:00:00")), "hh:mm:ss")" 時, 90000 - 95900這段期間無法將data寫入.
    100000 - 125900正常. 130000 - 133100無法將data寫入.
    若使用 " t = Format(TimeValue(Format([C6], "00:00:00")), "h:mm:ss")" 時90000 - 125900可以正常寫入data.
    130000 - 133100無法正常寫入data, 必須在"G"行的儲存格使用文字方式才可以, 也就是子行輸入('13:00:00).
    Q: 以上請問是有甚麼衝突嗎, 是否有方法解決 ?

以上請各位先進不令賜教.

DDE-Test v2-1.zip (31.97 KB)

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題