设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4157|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:4 m% O; Z% ~- @7 ~# e4 d4 ~
kanal:= DDEConnect("Excel", "Cost");
& d+ @' Y1 x( C- G. H* }  }9 ZDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);# k" Y. ?1 l+ [: v+ {. j1 w6 \
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);* p& K0 t3 Z" a8 B
DDEDisconnect(kanal);
: K  |# l& ]. w. C0 E7 ^$ U( D+ e系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。* ^5 n+ v4 L! \/ W/ q2 v8 g& T6 |
8 _" T7 j7 c0 p( k! v: k
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
- S3 r/ r  M- L3 P, ]/ u1 B+ k+ q
& q: O  ~; m. Y0 h/ Z. H9 |2 ?: J: J) Z5 u) j+ ^4 j/ W
木有人理我么?' f% q) n1 u  h

3 x& P; l6 W& ^* N我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
1 g1 N# V; D3 Y% j. B8 e
) A! P+ A' v. pDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
# m# O3 f4 {# a% m) s! z: G4 U$ R, D% m& i" I
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
6 b% i/ R& I6 L8 ], L7 b/ Bdde确实没用过,不过之前用过其它接口,不知道有没有共性。
( z; `, y4 t9 ]- U/ l! }3 O' R
. z7 P1 r- Y" i' L# O: s# [; P触发语句是这样写的execute("        'cost'   ...

. D+ M5 z& m" R) K9 J; s谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
& b8 t6 o, j" C; G: E
taoyifei2000 发表于 2012-3-29 21:37
( l4 X. Q6 a, t0 @; q* E- tdde确实没用过,不过之前用过其它接口,不知道有没有共性。
. w% p! B( o1 G9 Q% x) i$ B  f* g# c) X
触发语句是这样写的execute("        'cost'   ...

+ _8 B: y: n/ o. X' F5 z
% c4 U- R3 t, L7 [3 K; q不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。. ]5 N5 a; v/ e5 q
5 i8 {0 v( Q8 z9 M6 a: g. F/ o
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
8 l" R) w( q4 m1 R4 o  ]! h
若叶繁茂 发表于 2012-3-29 22:03   j3 c4 y2 {1 h% K7 O
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

- W# u7 P2 `7 y; K3 A& l! y$ M. p5 }; x* e/ ]4 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 g7 C8 p2 F5 m% N, ]; Y
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

3 r& q" N# u8 P6 V谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
2 F: j0 Z9 }9 \4 e" ~2 ]7 q% p0 {! n' Q, v0 }& s; [
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。$ O2 e/ P$ m" @. Y
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:& ?' j- A3 m# B- S6 {
is
' X1 _( B9 J3 c7 d- h( o        xl: any;. w4 m/ N, F/ }+ @
do
9 s' h, k6 F" G& s        if ActiveX.active then7 x- ~' C6 A) {& V
                xl:= activex.application;
  |6 E) J* b' a: T% H2 _                xl.call ("Macro_Reset");7 g; I* K) J% x7 B5 Z% s
                activex.active:= false;
& o$ I+ {9 R, ?8 h7 Q4 u        end;
- J! K3 s) i1 J2 ]6 Q3 b        4 ?6 ^# f+ y" M! y6 I
end;) k+ j( W5 {; M: X! x

, l7 l0 v3 ?( a4 P  D! x显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
8 r4 S0 D+ X4 z; f3 P) `" C4 p0 x, ?* n/ i
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-3 05:55 , Processed in 0.017302 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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