设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5226|回复: 7

[求助] 请教关于em-Plant做client的DDEExecute的应用

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:5 Q" e; k9 z" \# b
kanal:= DDEConnect("Excel", "Cost");! C# b( z3 q# m. B2 W  `3 z
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
, m1 W( s. p: g. DDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
; Y. @. I4 ?  c9 WDDEDisconnect(kanal);
8 s5 w1 M$ L8 g' Y5 W) b" |0 h系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
" P: `0 \; L1 V' E
- S- i8 I+ K- |) k& ]请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 6 t$ L' w% H& D+ |
: \8 T( i+ c: `8 U
/ @$ L( b# l3 q
木有人理我么?3 ?+ @2 h! x; q

3 R! V$ y8 h" A  C0 F我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
. Y% e( C2 x1 k+ L) t& t5 g1 `7 z% f9 B5 E3 t& J8 {1 J4 H; `3 }
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);3 G6 k$ ]/ _8 [' ~% x' A
: C; Q: ~4 r* U% f  A6 N5 T$ w
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 + A, p6 q0 q& Y
dde确实没用过,不过之前用过其它接口,不知道有没有共性。: v( M7 u, V9 n+ L/ r( M8 u

9 e$ ~. r, n, ?+ h触发语句是这样写的execute("        'cost'   ...
% j" m( I$ Q6 Q1 ]6 S6 k
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 ! o  |0 J0 j, |. m
taoyifei2000 发表于 2012-3-29 21:37
; Y9 d! n' C+ b0 \4 Q& Rdde确实没用过,不过之前用过其它接口,不知道有没有共性。6 q' i& I; m  D
1 [  x" }1 e; O  i0 v$ x
触发语句是这样写的execute("        'cost'   ...
+ V& e2 j3 _0 k, O5 e# K9 _

3 l& {6 A7 p; ~1 T/ ^$ P9 I) f不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
) W0 Y/ Q! e% E( n) X9 u/ R
2 i' h7 T# Y; R诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 3 V  X: {$ o2 V  e4 s
若叶繁茂 发表于 2012-3-29 22:03 0 N+ {" L4 x8 D1 j6 P+ `  Q
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

% ?/ r: i, {; U% z: C/ h! J
, B% C0 Q& Y9 |: k7 X* k) [5 M我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的 觉得效果还行。。。
发表于 2012-3-29 23:15:32 | 显示全部楼层
还有我按照你的语句写了一下 电脑并不沉默 但是只是单纯的把 Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value 这一段内容作为字串赋值到excel里面了 囧。。。不知道为啥。。。
 楼主| 发表于 2012-4-2 20:50:13 | 显示全部楼层
五五 发表于 2012-3-29 23:13 3 `* w1 w% c# s0 Z5 S# j, m; o
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
- P: `. _% W# o
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
7 s, p. Z9 }) s$ O$ R6 {* i, w4 t; Z
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。' Q7 _8 J: }; s. A$ ~2 P
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
3 k$ ?  [% y2 l; Nis
& n6 n  ?1 s- {3 S3 ]7 r1 `        xl: any;
) C- l! ^% M3 h+ g: r7 Y; Bdo
# L; s; ?9 J( {3 B( l/ U        if ActiveX.active then
$ a0 C& P3 L& F7 {                xl:= activex.application;& ~! \: U9 @+ Z3 B" Z* V
                xl.call ("Macro_Reset");7 D- b5 Z% o  Q
                activex.active:= false;1 ~2 F% w7 c1 a5 z
        end;7 c: Z7 d" P9 e
        ; f- d3 H+ I3 B0 c. G
end;4 d8 _; D" v2 p/ G

, e1 n( z2 V, r- [显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~/ ~" B0 `4 B7 m( J; c

# H/ v% V( V' H$ W期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2026-3-13 21:33 , Processed in 0.015377 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表