设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3346|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
$ O/ p  M: [# D' A6 xkanal:= DDEConnect("Excel", "Cost");) @) E0 {( L0 _8 y- V) g$ Y: G
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
$ l& ^, o# }( k" }DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);: U2 d6 ]& E7 _; s8 i! R  a/ P
DDEDisconnect(kanal);  W& B7 y4 ~! A( T& ]
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。- E5 c: y) r' z; F
2 g% y3 f7 I9 L' h) J0 u
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 1 X; l5 V2 s  \+ `) j: w/ p! N

8 R, ?; g( _; \$ C
( F' H" U' o8 l% Z: q/ Q木有人理我么?
6 ]- e/ j+ r9 N, g+ J
/ R$ y2 ~9 e* M; S9 t1 o0 d  s, D" A我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:6 _3 \! r: ?% O2 V( B

- S, w# ~2 y0 E2 N9 lDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);4 |  G! F1 [& |) K2 A* d$ B! V. H! x
/ P4 Z2 b# E+ T8 d
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ' i: S* Y/ _1 Y& f7 {  [- U) E
dde确实没用过,不过之前用过其它接口,不知道有没有共性。, y2 b3 g4 `2 u7 O0 x6 a! ~

  C' u) b% w3 o5 H9 D+ h触发语句是这样写的execute("        'cost'   ...

, \/ m" d* e* q4 U谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 6 n+ n  l! K) X* b+ L6 ]& u: ]- D& I
taoyifei2000 发表于 2012-3-29 21:37
1 H4 V0 ~  R6 Bdde确实没用过,不过之前用过其它接口,不知道有没有共性。
- V, \2 U( t( ^( N3 R+ }5 H8 T3 X) z# {. Y+ t& }
触发语句是这样写的execute("        'cost'   ...

1 N9 f. r8 K( y! c, M$ H. j8 c, O1 L; c- j
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
: z. b" z1 d3 G- e5 _
3 V! W6 a+ H1 M诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 & N( F- B" [5 Q( q- e  W7 y8 V
若叶繁茂 发表于 2012-3-29 22:03
( m0 \: j) z$ f0 N不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

( q7 p: \6 j  y: n; m% ~& X+ ?* P; C; l/ Q* I% g
我也没用过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
7 Q* V0 \% Z1 i3 a; k. }- A我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
+ I! P. b3 C4 D( h7 b+ g
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
, O/ c. z# K8 C
5 H- e' _7 K$ i3 _. h) m我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。. n/ J$ f: h& b
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
/ t1 i, q' [; }$ Kis
- X1 n$ h2 V' d5 U        xl: any;
. J. i2 p5 [3 g; E" Fdo+ N. {; k, {$ i+ I5 |& P
        if ActiveX.active then
* j2 a+ e, _$ V( q8 t+ `3 B                xl:= activex.application;
! N2 |: b, T( R: O, c7 j                xl.call ("Macro_Reset");9 d5 F3 N/ W# O. C
                activex.active:= false;* g3 I6 T: o/ R3 ]
        end;
' ]5 L9 p$ x2 G) ]; D$ G       
8 Z1 t1 y5 c; l( ]end;
9 h1 r& t9 [% a+ s( m* [0 k1 p2 M' Y' u$ x& u$ e$ J9 b
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
8 {) f$ F8 ]% @2 h& h" S6 ^8 @: a3 F8 P$ Y9 {( R
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-26 12:23 , Processed in 0.014328 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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