设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3658|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:8 {( \# S1 x" ~& G6 ^
kanal:= DDEConnect("Excel", "Cost");1 V, j, y* _8 t4 A( G
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
( c: U& M+ a/ K  d& fDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);! N$ s) X2 z! q. o$ w
DDEDisconnect(kanal);- N, o% p7 h+ q5 S, S
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。& g- k" F# |3 W  h8 G! R% u

! }& |/ S2 _9 Y* _* ^/ X2 S* y+ U请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
1 E3 V6 b$ [+ L* o- _$ i* K; t+ ?( X5 B- u, I

# |* b8 H& Y0 l3 U) M6 F$ Y+ m木有人理我么?, K" k; Y4 t5 t: x( i+ A

8 h0 |" |2 J: K4 J$ ]( b我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
  N+ C; X- N" \+ m  m& e0 Z5 O4 x, W1 t  j( J) ?
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);2 b1 w4 _1 A3 D/ Z
0 K; L; J0 N# E# W9 g
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 5 M! R, `1 V/ O; I! _9 U2 O
dde确实没用过,不过之前用过其它接口,不知道有没有共性。3 r' a: r+ H0 J

/ ?8 p  v% e2 j5 r* E' J触发语句是这样写的execute("        'cost'   ...
  n3 m: }% b& {6 v) O2 H& G; G
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
8 k& ~0 ~8 w# _5 f, n: B
taoyifei2000 发表于 2012-3-29 21:37 " m9 o/ m. P5 X' }9 ^5 |/ ]' E
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
2 n- ~+ b" ]5 K0 o0 I8 \) R+ J# S5 k
$ `" W) i7 d( R, T9 @3 i3 ?+ k% `触发语句是这样写的execute("        'cost'   ...

6 b6 F5 S( |, z! t" Z* a7 d5 r5 k6 K/ c+ f
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。$ t; A, h+ Q- d7 F) y- F
" Z0 M: u7 e1 Y( g: Y; q! {& u& q& B! K) V
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 ' a& [% A- z, l( F, q2 c/ C
若叶繁茂 发表于 2012-3-29 22:03
& ]" x5 g+ a6 J' k+ {  F不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
, N! G6 y3 ]/ z* V

9 q) l8 k% c- U4 c; O; g* L1 V我也没用过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 % t) H% S! _/ @7 s) l  n
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
$ T) @( r$ D1 P( V4 Q; v- s
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
% I! I4 J  F& N) d4 ]
" y) H& W$ V/ ]7 h* W我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。" _- J' K. o: ]# n' p
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
. b: N0 ^: {$ x4 l, _9 j5 |- uis
) s3 G0 q1 L. a( X; s4 Y        xl: any;
4 k, @# J0 j% [2 W8 ]+ ?0 jdo
5 Q% i7 f7 T, e        if ActiveX.active then
0 O: D, `+ P0 y. l! M  L                xl:= activex.application;
& P3 i7 X. H6 K) @6 ~& e                xl.call ("Macro_Reset");
# B, x. r8 n- C                activex.active:= false;
- w4 F: T! j% ^) l+ R        end;( m* {8 ~3 o0 w$ G3 A$ m
        7 E( T% u  O, m' o. c/ s
end;
/ Z( _3 G2 N2 I5 M/ }- M4 H0 S$ d! B/ r
" Y& g2 ~& B% R& \显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
+ a" a+ d2 B, G  a$ q0 z, r( O. \+ H2 u9 S2 t; |
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-2 20:26 , Processed in 0.012896 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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