设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4681|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:% h7 d4 f' K) m3 a9 g  v1 B
kanal:= DDEConnect("Excel", "Cost");' W, h3 ~4 X1 r7 [2 w
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
! ^$ ~% q/ ]6 P9 h5 l0 S5 K) FDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
1 e" @" ~! w4 ~6 M0 v+ I" ]( iDDEDisconnect(kanal);
) N) W; [7 V) N- n: @2 ^2 ]系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
+ _0 c9 R" ~( K- m0 ]
& n. S3 r  H0 V- k请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 7 s' [) ~& m, y+ }, t

+ o3 M( x9 H1 w8 K0 W7 [# c8 G, h% Q- l7 k+ v3 S% l+ ^7 i; i
木有人理我么?
& f6 R2 `% f/ t, o
* s* q  I9 |1 t: N/ V; |. y  R我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:) \9 I3 Z7 t# \4 K4 ]0 i7 ?# W. l

9 \1 Y6 z" B$ o' a- G" VDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);3 \1 c  k8 I6 m6 }
- b9 v; l) [/ ]6 r; `" M7 s
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
$ ^/ U4 m5 S' T5 Q9 M% _4 S. Mdde确实没用过,不过之前用过其它接口,不知道有没有共性。
5 G' f, x; b- D# o+ }7 D: b2 A" ~
9 k( t: J5 w; h! }5 o触发语句是这样写的execute("        'cost'   ...

& B& i, f/ Z4 {& w' |9 l谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑   N" E! e. R: L% a$ J5 d
taoyifei2000 发表于 2012-3-29 21:37
7 X0 Q, F1 G: ydde确实没用过,不过之前用过其它接口,不知道有没有共性。
! ^2 `+ {+ M5 R# v+ C, T& q! I( U) S/ n
触发语句是这样写的execute("        'cost'   ...

" S7 a7 J* o" \; _  p  Z" K) i- Y( j: M  p+ P+ ]; O
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
8 Z4 n& r0 P7 M& b+ O% ]; w% y4 O; N) B: P$ u/ p0 ?- z4 d1 |
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
- [' v$ h6 B' s* ]
若叶繁茂 发表于 2012-3-29 22:03
- Y% Z4 H# b" v4 |! Y+ k不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

* Y4 r$ D( y( f) a2 n+ O+ J& g% Q* k: ]4 k4 P, [; N' a
我也没用过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 9 L2 y1 v2 }3 z# _
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

3 i9 N( E$ ]  T+ l5 r; s谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
. x- }  r  O& Y0 |3 F- U) }8 D# ^  O0 A9 B3 x4 X
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。3 P: O# K  H9 [9 W- d2 ?
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:6 G+ c* W7 V/ F0 b
is* u( t; i) u' M/ z# j
        xl: any;1 D2 j6 O9 }( R4 X* v$ e' v
do
$ z5 b4 O# _" b6 K3 G9 k        if ActiveX.active then
8 E- b# M8 g/ ^                xl:= activex.application;
2 Y9 b) d4 F4 K8 ]* Z/ C: r: z  L5 p                xl.call ("Macro_Reset");
# U4 ]$ j! `. U, |# y& k6 r                activex.active:= false;
  ]0 ^! d/ g: c' F  G4 O# \        end;
$ W8 S' }5 I# Z/ K  j        , n. I. U. U0 |2 R% Z5 Z9 M5 Y2 u2 @
end;& K9 u4 {1 R" j" E6 _
) m4 N6 k5 O  A( B0 r8 P" Q
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
9 |" ]% |% a, f2 S( o- D. b% K- g9 h. R4 }& U! `  e4 B
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-26 23:40 , Processed in 0.017774 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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