字體:小 中 大 | |
|
|
2019/04/08 23:36:54瀏覽7138|回應11|推薦3 | |
應網友要求,清明節連續假期抽出一點時間,寫了一個記錄 DDE 傳入的每個 tick。主要原理是利用 workbook 的 worksheet calculate 事件(event),也許未必能抓到每個 tick。今天在盤中用 QXLite 的 DDE 測了一下,然後簡單地公開這個程式,需要此程式檔案的朋友們,可以來信向我要xls檔。 來信主旨請寫明:「我要抄錄DDE_OnCalculate.v1.0」 [2019-June-4] 本文發表後立即有幾位朋友來信索取xls檔,發現有的時候會抄錄到完全沒有變動的資料,因此我做了抄錄 DDE_OnCalculate.v1.2 版,在執行抄錄動作的 procRecord() 裡面增加了一些邏輯, 比較這一次(被觸發執行)所取得的值是否跟上次記錄下來的完全一樣,若完全一樣就不做抄錄。底下我會將 v1.0 和 v1.2 的procRecord() 程式碼並列,請參見程式裡的註解 (remark)。現在(自2019-April-22起)來索取此程式我都會給 v1.2 版,需要v1.0版的朋友請自行將那一段邏輯判斷程式碼刪掉即得。 [2019-June-11] 使用抄錄 DDE_OnCalculate 後,有些朋友來信希望可以設定何時開始抄錄、何時停止抄錄,於是我寫了一版,請參閱部落格另一篇文章:抄錄 DDE OnCalculate 之預約開關版 工作表 Control 工作表(控制頁):控制是否開始執行抄錄
用法 把 QXLite 的 DDE 導入 "DDE-Input" 工作表 (資料頁),然後存檔。然後在盤中,而且 QXLite 正常啟動的狀態,按下 Control頁的「開始記錄」鈕,DDE程式傳入的數值就會被VBA程式抄錄到Record工作表 (記錄頁) 裡面。 程式碼 ThisWorkbook : Workbook_Open():每當這個活頁簿檔案被開啟 (允許啟用巨集) 的時候,Excel 會執行這個副程式一次。因此,我們在這裡面設定公用變數的初值和Control 工作表的初值。 ThisWorkbook : Workbook_SheetCalculate():每當有任何一張工作表內容發生重新計算的時候,此副程式會被執行一次。引數 "sh" 會傳入發生重新計算的工作表,因此可以判斷是否為 DDE-Input 工作表。 Sheet1(Control) : CommandButton1_Click():當 Control 工作表上的那個按紐被按下時要執行此副程式裡面的程式碼, 此按鈕的作用是允許/不允許繼續執行抄錄的切換開關。 Module1 : procRecord():此副程式執行抄錄的工作,當Workbook_SheetCalculate() 要執行抄錄的工作時就會呼叫此副程式。 公用變數
在 Module1 裡面有兩個公用變數, 存著副程式需要共用的值: iRecToRow: 整數,下一次要抄錄的 Record 資料頁的哪一列? bRecording: 邏輯值,目前是否允許抄錄? ※本文相關文章連結: [Excel VBA] 固定間隔時間記錄DDE傳入資料之「預約開關版」 |
|
( 知識學習|其他 ) |