设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4036|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:3 G7 g5 t! h' K: H
kanal:= DDEConnect("Excel", "Cost");
  q1 o- e0 D% ~0 V5 dDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);3 ~% F1 e$ E8 c* I9 F
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);$ g. e- t' G6 M2 t( T; e
DDEDisconnect(kanal);  Z% e) t8 l# G) M. N
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。/ g+ r) f2 s" d6 T6 K

4 F  T7 j+ P' j2 _3 H请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
: k  C. E$ R; j/ b' m" S8 K2 d* ]$ C. z, {( r+ c

  [6 c- Q( p5 o+ i4 K木有人理我么?. T! @* l+ b" M
* @# m" b, S& F. r) o' L0 b
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
4 w9 @6 P5 Y$ y, @5 O& `$ v; q% a( C3 \, {8 V, U  t( U
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);3 ?& Z7 B' D" ^& D+ t+ d

9 f; q' O5 H$ J6 J但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
6 H: D3 }7 w7 B. l; M4 qdde确实没用过,不过之前用过其它接口,不知道有没有共性。# v4 k8 d3 v: k: J; X5 ]

" T& T5 V& }6 L9 {3 s触发语句是这样写的execute("        'cost'   ...

# o; v4 A. |& j6 a* l5 O谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 / @2 d* q! p2 u
taoyifei2000 发表于 2012-3-29 21:37
2 ]' x; L5 z3 Q$ ^dde确实没用过,不过之前用过其它接口,不知道有没有共性。/ O* `0 _. Z, u( y5 ^/ Z& ?
0 j1 M5 W. o$ K( @: }  G
触发语句是这样写的execute("        'cost'   ...
* i. y0 H& u& G7 N, y/ p  L

7 P' N& R% m/ @& \' I: `不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
* T" G/ e% d) `) e0 U* W# v
  b0 ^! b& G$ ~* l7 M诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
1 Y* Y7 K% [* n3 {( y
若叶繁茂 发表于 2012-3-29 22:03 3 u" x, ^2 V, J/ \
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
) h) X0 }. n* t0 x# h6 {! c* J
/ t+ C7 j* d0 Y( P( C: 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
. f8 D0 d7 K3 _; _9 q我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
! O1 P6 V/ Z; }. N, n* d
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。7 K& m# t6 h% P/ K3 n# i2 }9 m
$ o) `, p* k0 `2 d0 n. B& g5 K7 u
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
: l9 Y( x3 y/ H* v1 d按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:+ F8 T: j/ Y" K8 s! a9 p9 l
is
7 z* W( Q( K, |1 I/ |$ E) j        xl: any;
6 {- V( @5 [* Z3 G8 F$ E/ M% ^do
4 u' s0 g; X2 N& }  ^) i        if ActiveX.active then
& D$ [' o5 y# u+ x% o  m$ r                xl:= activex.application;6 P" I3 B( V0 ^- q& j
                xl.call ("Macro_Reset");- H; k0 C" y/ V+ y
                activex.active:= false;
, n. [4 P, O! h6 ?2 W        end;/ @( l$ ~! d# x% R' t' y4 q
       
7 @1 `' \$ \& b5 g( uend;6 I6 n: ?+ l- r0 |0 ~: J5 J6 t" R
5 I6 t4 Z1 n, h( ?. q- J2 f
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~. j  o# J3 v# e$ Z$ w& W9 V
: x1 J3 B' j" U3 R  i
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-12 14:45 , Processed in 0.019604 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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