#

最近突然需要用到Excel做動態報表,所以就把很久沒用的DDE拿了出來。這篇文章以一個很簡的例子來說明,Excel透過DDE讀取Tcl變數的方法。

E05.1 註冊DDE服務

要讓Excel透過DDE讀取Tcl裡的變數,是很簡單的,只要註冊一組DDE的服務就可以了,如下的例子:


package require dde

dde servername MyTopic

set var1 "abc"
set var2 "123"

entry .t1 -textvariable ::var1
entry .t2 -textvariable ::var2
button .btn -text "exit" -command {exit}
pack  .t1 .t2 .btn -expand 1 -fill both

這個程式的重點在第3行,它在目前的Tcl直譯器,註冊1個service name為TclEval(必然是這個值)且topic name為MyTopic的DDE服務。一但Tcl程式的DDE服務註冊完成,你就可以在Excel的任一儲存格中用DDE的連結語法來讀取Tcl的變數。

E05.2 DDE連結語法

在Excel中你可以在任一儲存格用下列的DDE連結語法來存取Tcl的變數值,當然前提是Tcl對應的DDE服務必需存在。

=TclEval|MyTopic!'變數名稱'

這個語法的開頭是一個「=」等號,然後TclEval及MyTopic中間有一個「|」管號,然後MyTopic及變數名稱中間用「!」驚嘆號隔開。如下圖,我在Excel的A1及A2儲存格上讀取var1及var2變數的值,請注意!! A1及A2中輸入的是DDE的連結語法,並不是「abc」及「123」。

e05-1

Theme Design by devolux.org. Converted by Wordpress To Blogger for WP Blogger Themes. Sponsored by iBlogtoBlog
This template is brought to you by : allblogtools.com | Blogger Templates