设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5387|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
' Q. c- j) `0 i# Y, b+ }kanal:= DDEConnect("Excel", "Cost");3 }  K, J% i! i' {; M
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
+ T3 N$ [, I5 ~3 r; j, t* Y. m1 oDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);! v- T3 U3 M7 h2 K1 J
DDEDisconnect(kanal);3 G, g. E: L  P" C; @
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。$ ~+ O* L' C8 y  o
$ D/ G  F, x3 v
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 8 B- S5 F2 ^4 W. H
; C0 l8 F  ^. o

: C  O  `8 \+ I& ?木有人理我么?
  n3 y" s; y( m8 V: {% Q9 n
& M; c' }. z, h' j我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
3 r0 h' L# ?5 ^5 A+ A
$ y8 E2 I. i& [. v4 {DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
$ I4 t& U  m, a7 \, \4 d0 d7 F) B# b, p7 v: p) l+ Z
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ) @) H/ i4 \& U1 ^0 C  |4 p
dde确实没用过,不过之前用过其它接口,不知道有没有共性。3 ^; `3 K# F4 B. {9 b% V

# s  B! R+ `- |" D$ G触发语句是这样写的execute("        'cost'   ...
1 N# t1 @5 T5 k# G" ?
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
( x2 z4 x. O; Q. N7 W; [" [% I
taoyifei2000 发表于 2012-3-29 21:37 ! b; m1 [, ^% e1 m) L) A
dde确实没用过,不过之前用过其它接口,不知道有没有共性。; M: z6 p$ @1 A* v7 G% ^6 z

# h& j. Q+ y" p! S' W. ~8 O触发语句是这样写的execute("        'cost'   ...
$ b1 E0 |5 F; D' T; y9 h6 s; a# Q

" C$ ]0 ?+ ^) _  Z( o不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。8 R* J3 U/ N' @, S

! O. `2 v; W9 L& S! W; h& P诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 # n# W5 b/ s" q
若叶繁茂 发表于 2012-3-29 22:03 - c, F' F3 X8 d2 E' Z
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

* F; i% g8 R2 ~& W/ ]
& c6 ?- i/ z+ N( P7 Z; Q我也没用过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 1 i% v6 M( w5 \( e  Q
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

4 C  P( `' c4 s  A谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。  ?# F6 l4 r3 `2 y: u6 p( _! i
& ], E! t$ D; z' b3 M4 r0 Y
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。1 i' D$ D6 Y' f; `
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:0 E7 h; L- \$ L  F' f$ V
is8 ?( Q0 m/ z' A* q( v9 `$ m
        xl: any;# t+ _8 {9 m1 D# o
do
8 M. A+ w  J0 q. F        if ActiveX.active then3 K) o& H; t6 u$ M% Z8 o0 t
                xl:= activex.application;' P9 w) ^% [2 d: P  v: N
                xl.call ("Macro_Reset");
% J1 w6 i+ z0 c6 h) o* d* f8 ]                activex.active:= false;
2 Z% `2 X1 w+ b- |, `3 r        end;
  J1 Y; `0 A: G" }; t       
8 U4 E/ q* F% }  |: rend;, y+ o4 t8 w! |; n/ [* O

' @% M+ E" n" U8 Y% @) M显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~5 W! @8 j# o% J& Z8 \
* f) g$ Z/ h- K) P; \
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-30 00:43 , Processed in 0.028896 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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