设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4678|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:7 _. B% z+ b3 E
kanal:= DDEConnect("Excel", "Cost");
/ X" d) R& H/ O9 JDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);: b: `) f5 h1 x9 p6 E
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
$ R4 O8 C* {2 M& g5 WDDEDisconnect(kanal);/ d) o1 b0 S3 g, u) ?. d/ @
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
7 X! M; U' L1 z. _/ H+ P3 L; G+ f( i; s, n0 H" r1 ]
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
$ |8 T: ?% O! Q* E$ {! q1 d* ~' A( C1 s2 i% j( a. p/ K/ W& r$ u" U

. }0 m8 E9 C: S  h木有人理我么?
2 {' R/ K# Z$ }
3 M+ G5 }, Q, \! L我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:6 z& x; R  P3 X5 M; J+ i' \
; h5 Q, {6 K8 f, m% v
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);4 d, Z( c1 D4 i* `0 C- l, x7 b7 }) S

( D! ~, z, _( D但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 4 ?4 b/ Y# H, }( f- [
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
7 T: c+ l1 A+ N# m
+ n/ }1 _1 L3 U8 f! g触发语句是这样写的execute("        'cost'   ...

8 v+ {1 M4 {: _2 h* Y8 Q) A谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
. c# ?! t" |4 w) l% l% M/ u& p
taoyifei2000 发表于 2012-3-29 21:37
, ^, o% s) O. l$ q6 ~7 p* ydde确实没用过,不过之前用过其它接口,不知道有没有共性。: A; g/ S; K; H' w/ J5 |  F8 p

& @+ `$ Z* }2 i& H触发语句是这样写的execute("        'cost'   ...
2 Q  @9 K! @4 ?- o. x' t7 D
- ~+ J/ A' g6 n% v- I) `, X
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。1 `' R  l& ~9 u1 m, ]+ I

$ ^* c8 R- W9 m. [- |诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
- c5 Q1 f. l* Y% A7 M5 h( Y9 y
若叶繁茂 发表于 2012-3-29 22:03 " m  h: D. E: q, t
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

1 j' K8 I  h0 E6 R6 f% X
) Y/ f9 l$ R, K( [我也没用过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
# {# c# X2 X% p( b$ N3 Z* Y% x: U我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
1 [8 f; e+ L- Z& e" _' a& T7 }; g( g. z
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
9 T+ l, g2 ~/ g
4 |4 f1 g% w7 t% r3 b8 J+ [我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
- @: C" S& [* y; b1 X0 K7 }% E按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:+ c5 ]- N5 t( X) I5 z& o
is
+ D/ _# _9 O* @! z' z4 {5 h& L* l        xl: any;- U9 I5 _& s7 V. G) k
do
; y8 |  }9 v/ {3 i3 r8 G        if ActiveX.active then0 G1 L. _: J- [: v" V, ^8 h
                xl:= activex.application;7 p& e+ {; x# m5 G. k& x
                xl.call ("Macro_Reset");
! w& ]# _$ T# L0 k  l                activex.active:= false;
5 u7 E5 ~' W% H5 D9 H* r, `        end;
* j/ |% }! T8 D9 {* R8 n        4 l) R/ Y& `$ r* @3 J
end;  R4 b6 p7 _6 {+ q% [9 S

; h# t- r" w2 d- m+ H8 R显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~5 `% p. U" t# A; u  {+ Y
+ m# i5 t) C' _8 [* ^
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-26 19:48 , Processed in 0.014058 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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