设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4710|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:! l7 ~3 ~$ I2 |; F% ~
kanal:= DDEConnect("Excel", "Cost");
& R" [7 b4 ~0 @6 RDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);: K4 F8 s( w5 V5 a
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);: E% \3 R- @3 E! n
DDEDisconnect(kanal);
, z& x3 w8 K+ `7 ]* p" A- U& Z系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。# A& J* Q6 T/ o' R
$ m: U2 B1 H4 k' S! ^( R
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 - X9 k* G5 S* u5 O8 g2 e
+ J& {9 m2 }/ o* b+ \5 S( k+ X

* G! ?" ~  s9 z6 J木有人理我么?
- M& k$ z- e2 o8 H; q3 @  W2 d7 |5 e% W2 C( A& D
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:5 G1 n# |  e- ]0 \* F
3 ?: U, p# ?+ w" I& Y
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
0 P! k: U* W1 D; T+ L: D, z! X6 ^  }1 N# ^! p1 z6 C/ N$ v9 b
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
9 l: C2 @; ~  V  S# p( Ydde确实没用过,不过之前用过其它接口,不知道有没有共性。1 C4 M* Y+ {2 L8 A. C0 s

8 w: f8 I6 c( F9 \4 f, e6 M触发语句是这样写的execute("        'cost'   ...

% }7 o# H4 E& A9 ~% j谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
& V$ H! M, j6 g1 A1 x0 a  M
taoyifei2000 发表于 2012-3-29 21:37 ' A; c& N" l0 O2 w
dde确实没用过,不过之前用过其它接口,不知道有没有共性。7 k! e3 B3 ~0 `4 |. A

( t0 m2 C* V$ y3 q) i3 _$ r触发语句是这样写的execute("        'cost'   ...

! f/ M) g8 \" a8 c+ z8 J6 c; I) p. K# |9 s
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。( R, v8 ^# H/ y- j- x

9 y& O: J& @5 Y1 ]: d- @; A: q诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
: q# p5 Q# T+ j* v- |
若叶繁茂 发表于 2012-3-29 22:03 / C. ?" U; u4 L- Q, l, B% T
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
+ y4 [5 V6 K, v, W6 j' A/ U

3 i3 g7 A2 X+ R& s& l* l: \; 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 ' J" r5 \! }& u5 e! T  g, S  d
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

( H* R& c+ O9 l" x谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
; a* I* C+ [2 J& r( N* E
, f( a# |6 O# N5 v2 |" b我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。- t# v  f, c9 e) x1 H: h/ d
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:. U$ l+ y2 C8 O) y- n/ }6 K9 j: X% c
is
, I; l+ V# R3 }( E# Y: U        xl: any;
/ N9 o& `/ d4 E7 Q4 Y+ e" Mdo8 q, N' ]  i/ \4 }$ V. d
        if ActiveX.active then- ?- f+ O( u, q7 j1 R) k
                xl:= activex.application;
5 e7 V1 [& [4 T! j                xl.call ("Macro_Reset");
! t; Y+ {# h, I6 C+ q1 E1 k- a% Q/ T                activex.active:= false;' S; w0 R* `" O) K4 D' R
        end;7 [  B# j: S1 b0 E
       
5 r, ]+ L6 E; K6 V0 ]end;7 {. d& I) ~1 J- Q3 B4 |9 }
8 f3 o& o; Y/ y, M& f+ K( P
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
! I: I1 ^8 \/ a; m* v3 e4 o7 B2 X  w, U. ^; C. v
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-1 10:26 , Processed in 0.015639 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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