设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4356|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
! U0 Y& k4 _! d1 @! N8 E1 ]. _kanal:= DDEConnect("Excel", "Cost");
4 D# ?* M; r4 z5 Q2 yDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
" Z0 s( I! Y% k+ G, cDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);* V0 s( P5 c( K. a/ d
DDEDisconnect(kanal);/ _: T% c/ d9 x5 d' k
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。! @; g3 B7 p; z5 f) l9 y- I3 N5 i
) N$ Q' o7 |8 b) E& q" w# N
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 : X/ I+ O1 \  F2 ~/ f  @" M

! Y8 r; P$ j8 `( n5 h+ z% m: I' m+ A, j$ ]& o1 \4 S9 L8 Q
木有人理我么?
. c/ a! K7 N  W7 I/ E
0 x8 p( ]& W$ H我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
5 c) ?- [8 g. x5 o
1 Z7 H4 y" B( cDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);5 s7 \& I2 G. I: X+ w% Q5 J! }$ q
  S) p9 {+ J* H, I% c2 A; d
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
/ B: z7 U& w, s0 V6 G- c  zdde确实没用过,不过之前用过其它接口,不知道有没有共性。
# E& _5 B0 [+ d3 a# P. w( F
0 R0 ?6 b  Q, u4 ~$ G3 L9 ]触发语句是这样写的execute("        'cost'   ...

0 q; {" f+ z/ d9 X1 B' q6 Q谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 4 E: M2 B' Q0 l+ r; f! I
taoyifei2000 发表于 2012-3-29 21:37
" [, T& S5 F9 C: ~8 Idde确实没用过,不过之前用过其它接口,不知道有没有共性。( n' l$ ?" R6 D. ]

$ D6 Q2 l7 x# G触发语句是这样写的execute("        'cost'   ...

  a  z* \# ]2 G( V% G
# t; f7 a0 d: b不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
  G/ C7 Q# s) j( ~" n
# j2 X' L" E8 f* K: D1 ~诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 . k" s0 U1 z/ v$ s2 W
若叶繁茂 发表于 2012-3-29 22:03 8 s, c/ `+ Z- h% v4 c& A
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

/ c& g  R+ ?$ m; m$ ^& c% F' _
0 H1 Y( s! J2 J. Q0 R+ n我也没用过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 % N9 {1 @  F0 l1 J& w  J
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
* N9 d* |$ w  K6 i" j; a; G( I
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。8 a' G4 i" p, Z0 a

' n5 V+ P& O+ V我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。$ }, b2 @) ^9 ?; w. e) U
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
' w1 D8 m; r) D2 Q5 o; N! M! Zis
' p1 k) @9 J6 t) r6 K        xl: any;
. m: D/ s6 E# ?# {) }# mdo, }4 n8 O3 d: u9 c
        if ActiveX.active then" U8 L% c& F- _4 I
                xl:= activex.application;/ ~7 w6 T- p! w5 l: B0 W6 I
                xl.call ("Macro_Reset");  O; R  n* P8 r0 G- u8 D
                activex.active:= false;
" }+ A% U0 K1 J, K3 s        end;' e" B/ f+ Z, N" h
        % E% Y. f$ N5 e0 H  L
end;
& Y& J0 Q: i8 c0 b- E
8 _3 d1 R  r' N) H0 ]/ ]/ e( j显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~2 W1 x8 H: V  v' h  p
: z2 F+ i8 A& Y& n- P
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-29 03:51 , Processed in 0.013433 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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