來信主旨請寫明:「我要抄錄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 工作表(控制頁):控制是否開始執行抄錄
DDE-Input工作表(資料頁):將看盤程式 DDE 帶入資料的儲存格放在此表
Record 工作表(記錄頁):資料頁得到的數值會被抄錄到此工作表
用法
把 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傳入資料之「預約開關版」
您好:
麻煩大大給我「抄錄DDE_OnCalculate.v1.2」
檔案, 感謝大大分享, 謝謝
「DDE_OnCalculate.v1.2 版 」
感謝大大分享!!謝謝
中秋節愉快
(sky_feng@yahoo.com.tw)(sky_feng@yahoo.com.tw)「我要抄錄DDE_OnCalculate.v1.2」
感謝大大分享!!謝謝
(hzy801121@gmail.com)(hzy801121@gmail.com)「DDE_OnCalculate.v1.2 版 」
感謝大大分享!!謝謝
(kl608@hotmail.com)(kl608@hotmail.com)「我要抄錄DDE_OnCalculate.v1.0」
感謝大大分享
(u179022@taipower.com.tw)
(u179022@taipower.com.tw)「我要抄錄DDE_OnCalculate.v1.0」
感謝大大分享!!謝謝
(howstyle666@gmail.com)感謝大大分享 DDE_OnCalculate.v1.2 版
謝謝
(klcoast@gmail.com)「我要抄錄DDE_OnCalculate.v1.0」
索取檔案, 謝謝分享。