设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5340|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:) _, h9 b0 y2 A
kanal:= DDEConnect("Excel", "Cost");% M; N1 L% F( S( E
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
) m- Y( I3 c  N3 ~DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);9 ]& w" k7 J  _0 [" j" H
DDEDisconnect(kanal);
$ p) T. |" Z' @& a系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
& ?0 E7 N, Y& f6 E! \1 ]) I2 C
0 I  b" G+ P6 S) t' d1 b! Q请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
1 x1 y: ?9 e. t  g; W0 H6 L2 g7 V3 a6 C
9 y! a" H, t) W' ]  W4 Q
木有人理我么?
& [/ y6 i. }+ i3 U
1 F$ J1 [* q) Z我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
2 Y- \1 \+ T' j2 s) [- O
5 C+ \! j7 A  k5 MDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
! j0 p" K3 R. P2 [" g0 N" ?: R. x/ ]2 k5 {3 U) i2 e8 y
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
0 `  y! C* f# b8 A! ldde确实没用过,不过之前用过其它接口,不知道有没有共性。
0 d7 a5 ~( ^( W. P) H  t* L' Z* \1 ]7 ^9 u' i4 n8 i# J3 c% F& r
触发语句是这样写的execute("        'cost'   ...
' E4 k) ?+ Y1 D6 R4 C) N% p/ G3 `
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
4 u6 n+ e7 i5 q  `% s/ ?
taoyifei2000 发表于 2012-3-29 21:37   x, Q! ?  o& }0 x
dde确实没用过,不过之前用过其它接口,不知道有没有共性。/ h1 |" J% i$ i: J9 w7 m$ h! m

9 _+ S* L. m: d2 |7 t- {9 y0 W3 p# [触发语句是这样写的execute("        'cost'   ...
2 ~* q" y& p- x8 b9 W/ c$ h
* u6 D! B' X/ I$ k3 W6 F
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
6 E! G7 n# A% ?+ h* r% Z' p
! U4 Q/ N6 @; {0 U诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
' D% _2 @/ |2 m8 y4 `! z
若叶繁茂 发表于 2012-3-29 22:03
$ Z- T: X5 P6 M6 C6 @9 K2 L不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
4 E& v7 ?- T; k# ^, X" f
  f6 c3 [& I5 ~9 r
我也没用过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 " H4 T5 Z% V2 t. y, G
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

& U# e/ v) b5 u+ a谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。3 U8 s; y5 {5 h2 @

: [/ r; r& D  @3 l# u我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
5 m' ^8 g4 m5 c; P+ x# _按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:! D5 v. E4 L: j9 b
is# ~7 _; u6 p- o; E8 d
        xl: any;
. z8 K" C4 q: A( zdo
* V9 Z& |: k6 d% q8 \+ d# L, L9 N        if ActiveX.active then9 N$ Z8 q* d' W9 W" I  W
                xl:= activex.application;
! E+ B9 E/ c% K5 u7 x' R* ]9 E                xl.call ("Macro_Reset");
4 j) z# j8 k! A- r' N* T( h                activex.active:= false;( N* Z6 V2 _+ L9 G  j- }
        end;
1 {6 l; q9 m( D4 z4 P        8 {4 O, W) d4 @
end;
9 `, z. G& o( }' l* ]
) d, X  H2 f; ]8 s& I1 R显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
( R4 L% e9 ]9 v2 \  d) ~
3 k5 _  R% m9 \2 u9 Y% K( x9 W- W; ]期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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