设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5508|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
+ ^$ y2 w, |5 R9 C0 F/ w, B0 Rkanal:= DDEConnect("Excel", "Cost");' E2 Z, L4 w" X/ R6 n" U
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
! N* Y: ]0 C5 N7 M2 [3 ]+ |- @DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);5 m& F' x. o8 w/ V; A7 u
DDEDisconnect(kanal);9 L5 K& ]/ Q8 f
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。& p$ Q: T: z# q: {. h. X

+ L7 h. c& R, o+ r. v. x7 B请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
0 v: V5 K, U* {7 S( h# s. m7 ~/ j7 }7 F( u# ~; u3 n
5 O1 t" c& x$ c
木有人理我么?7 h7 t: {; i5 U0 o( j5 B3 F* m
! C9 y% v" F# N9 L
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:# j* T. H. K  R3 C/ G* U( L

* p' }2 j# P# X( o2 T, `DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);' o6 x5 R6 p( D* X$ y" J) `' c
6 N. n5 p2 d0 @
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
# D% ~) r, E. |" I: j9 U) N/ Gdde确实没用过,不过之前用过其它接口,不知道有没有共性。
9 j$ `- w' \. f& I: {
8 a1 w, q3 w- q$ S0 a! T触发语句是这样写的execute("        'cost'   ...
9 u1 C: Q: y" P0 j9 S
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 + m& r& B! G  f* Y4 N
taoyifei2000 发表于 2012-3-29 21:37 ) t2 ^/ U: {: x( m+ n% n
dde确实没用过,不过之前用过其它接口,不知道有没有共性。: o9 N' l& G: q3 i
/ P; Y! X( r- `$ f$ S7 g* q
触发语句是这样写的execute("        'cost'   ...

8 x8 y, D! z5 b4 j: K# q5 Y5 U8 R
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
2 Q4 Q  A4 I( P$ a# w( H: U3 x7 ^+ u
5 |4 ^8 f9 j1 S$ ~! t+ r" z诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 , M* e. C, w$ T- U/ B+ a
若叶繁茂 发表于 2012-3-29 22:03 - Q% L% p. B- X; F' @, y& a
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

8 u8 {, y$ L  G  Q
& [8 P+ q3 R3 l* o- E  B9 b# \/ 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
0 X* K9 a( Z; R- D! n我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

) H1 ~; w1 [' g0 U- E谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。0 E( y1 Y9 d" n4 r6 \) l2 c) u
0 F6 G! X2 e( T8 f) s
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。( T$ I6 g: u5 E: L& L$ ~, f3 k9 {
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
# v% r' S( c. {; \% l4 V/ yis- ?: p& C! C# m+ [
        xl: any;
$ K* r' S6 m; O" ^) m& K2 z4 jdo
" Y3 x. E) i% U  a* ~& x        if ActiveX.active then
4 \5 g2 Z9 N. C: M8 N. L2 V& ?! Y! Q                xl:= activex.application;% X1 @& J. k9 G  P& T9 j0 |% X
                xl.call ("Macro_Reset");
$ F% I/ w& [5 s* P/ S* V                activex.active:= false;
+ d9 c- {6 U5 Q9 ~0 r5 j        end;
9 z6 n5 G# r! S: L: M       
, L, Y# p0 }1 e! M6 T5 Q- q/ t& ]end;+ [4 ~0 I0 n% n; y; C6 h
, P9 s, U9 y" z7 L; x6 V. L  p" m; e
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
- M. h, p% K1 ]8 D" A( S
+ h6 @* c+ N3 ^2 O; `0 |( j期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-21 18:01 , Processed in 0.012351 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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