设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5339|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
8 b8 I+ v/ V8 h  ^& I9 Pkanal:= DDEConnect("Excel", "Cost");# \- F4 r- t. m$ @+ G* S- E6 P0 a
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);4 p  G& K* }% |8 ]7 c) a
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
* `0 x* s3 ~( x. ?DDEDisconnect(kanal);
( A1 b0 g# }7 s& f系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。$ h: s* f8 V$ I; G8 K

4 H/ @9 `+ E& p  U. z请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
0 ^( R8 Z  I4 @" d  y5 r3 t1 y- `, E7 C& [

; T7 e, K2 ^1 [% d木有人理我么?
$ G" `" [  a$ Q2 |/ f$ c
& K- p1 X/ f' T( b7 O5 ?) G# |我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:8 p6 I8 k* _! i2 O% ^
' P% T" G" G$ A" v
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
3 g  `: K8 p3 ~9 s5 s( u& l) n- O, g2 [  K
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 " v" Q1 S' e# ]4 I0 V1 s5 _) ~" Y
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
0 s' _& a, @3 ?: c) q/ v$ h* U- T2 w) i, ]
触发语句是这样写的execute("        'cost'   ...

0 o; q1 d+ C6 h$ W$ J, B/ t2 Y3 b谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
( j! q& d9 k  @3 c0 b5 a6 {
taoyifei2000 发表于 2012-3-29 21:37 + T0 F. Q7 w1 m3 c
dde确实没用过,不过之前用过其它接口,不知道有没有共性。/ i: H; z. W, o& b7 b  V- u' J4 O& ]+ j7 H

2 g+ A( u; u7 [. c# V6 E8 N触发语句是这样写的execute("        'cost'   ...

$ B1 p2 ^. i1 K- F( Y% H
2 n2 Z5 @; j" I% X+ u; b4 l不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。( ~2 H/ O5 M/ H

" R2 k; m. z" O  s( z- w2 |诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
" F/ L. m8 g3 @9 N. ?. h+ p2 ~
若叶繁茂 发表于 2012-3-29 22:03
) M+ h, x" \) }% ?* s不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

+ O4 ~- v1 C/ z
, a0 [9 q3 o% [5 g* _  K8 s2 ?0 i我也没用过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
/ w* K- |, |: h' `6 X. h我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

4 f. j/ w* p9 v3 t  y谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。+ ^4 Q* E, M" K" Y. O* _

6 s/ \/ U9 W' e) K我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
1 a% X  G7 z; C& k4 w. {5 h按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:8 F/ Z& x+ J) p% B& j) U
is! U0 s2 c5 U9 v3 {4 g
        xl: any;# s% d7 h" V. o" ?3 m5 s& N7 |& E
do
/ b8 ~% x, ], V4 T        if ActiveX.active then
5 Q1 R7 F) Y: l% V. u) ~0 ]: Q                xl:= activex.application;
/ Z3 O9 f2 R- U4 g1 e+ F& f                xl.call ("Macro_Reset");9 u* r9 n" }3 U
                activex.active:= false;7 I' i- q4 g+ m! s  {
        end;
! ]9 M5 {! L2 q       
8 }8 ^& f' F/ n, ?# t/ U! {end;5 R9 G4 t1 `+ O  s1 q4 Q: C  f8 o
9 j1 ^2 V1 k3 I, n
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~  S' r) e0 F( j3 }8 t  ^

2 v4 Y( ]" ?% f5 w期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-17 22:01 , Processed in 0.015000 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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