设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4910|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:2 b" O. |: @3 T# _
kanal:= DDEConnect("Excel", "Cost");
2 Z* c# Q2 R' f0 B  ^" K3 JDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);7 b/ V  c+ T! u
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
$ z  ?( n' ]3 Y" R& jDDEDisconnect(kanal);: G' ~! T8 }$ {6 o: b
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。& m1 Q: M$ n8 p

1 y/ r8 S$ i  a4 v, `4 @) d: L( W请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 ) e3 f6 B# |) w* K8 P

( S1 W& b" c% B& N5 e+ B9 z/ c( t) a! S
木有人理我么?
9 L9 M8 B8 i  Z" S. P9 m: ~8 ^3 u
5 ]; @, ~  k: N' f我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
9 y9 P1 J$ V5 O" M! r/ W
, d2 n9 n2 k3 |6 @. Q5 aDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
2 }; R# Y5 {  B* D( b+ J0 o- [9 a8 o3 J
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 % ~) i* _6 p4 i9 O
dde确实没用过,不过之前用过其它接口,不知道有没有共性。1 ]: p' v% i5 d  Q
* V8 J! l0 U; C4 C; u, z: T3 ?/ z
触发语句是这样写的execute("        'cost'   ...

# E. s2 ~' E& u, D- d谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
! f2 h% }- u, Y0 z2 Z7 N
taoyifei2000 发表于 2012-3-29 21:37 : V% i/ c( Q: N# c
dde确实没用过,不过之前用过其它接口,不知道有没有共性。8 l# O5 }. D; h/ ^1 R' Y

' L, w' `8 a- C1 K5 p触发语句是这样写的execute("        'cost'   ...

  D" O# Q% D, c8 ^$ I
' I+ T( A0 d2 y0 E7 p/ @不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
# x" o) i1 \9 C9 i" n0 C- z
0 V% o5 a" q* E, |9 Y* f1 m5 S0 W诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 1 G3 u# k' r, B; X/ a
若叶繁茂 发表于 2012-3-29 22:03
8 K! a8 C6 Y: j9 t7 Q6 a不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
! D' G8 }  p( s" D3 e
0 ^+ x' T* 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 0 @1 E: E  d) k) e. j
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

) N% a2 O# M( R! h9 H5 x) H谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
. G( M( i. x0 P1 O$ d
, t& ?) F9 \; X. I) v& K9 R我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。1 j9 n; E! [' _
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:$ I* b9 J; \3 \) y$ E9 e: M
is
# {) n! u  ^1 l. Y1 o3 |& Q        xl: any;, _# A: w8 A6 m) D
do$ t/ ^& A% F3 @8 _* s
        if ActiveX.active then3 E) |# X9 D: E' I$ [9 h$ T8 s
                xl:= activex.application;& v" _0 Y( @/ T& @' T4 v
                xl.call ("Macro_Reset");
: v8 I7 E9 I5 @) ]4 j( l                activex.active:= false;
* u& k: i- Q$ I: g# |        end;
$ T* P' n& o; }6 Z       
$ L- Z; r4 W; ?) m5 W( K, Kend;
3 I3 M" u) A- l( P) H& W1 C! Q8 N( |- i2 x# {3 L+ a) D# e) E
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
$ v: {; ^. |# E6 O* q; b5 ?/ i' u8 f9 g2 L2 V
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-14 22:15 , Processed in 0.019022 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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