设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4039|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
  E* ~, Y6 w5 O- n  @- Pkanal:= DDEConnect("Excel", "Cost");
6 ^9 D- y. c8 R% ]DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
. M" l- Q: B0 \DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
" F# Z/ h9 q8 `5 d& E3 x- jDDEDisconnect(kanal);
& I  K8 v1 K0 k& }5 o系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。9 A$ J& F1 |- c+ _

+ M# X+ m0 F$ v& `# O: D! S6 _请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
5 {$ d# a; G; t: ~! a7 ?) Q+ a
1 x" e: S3 L4 s7 L" O8 G/ C! d+ X' [5 c  k. L! P7 }6 U, n1 f, q: Y
木有人理我么?% C% o, \7 x* W
) n, L" c: ?& z2 i  u
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
  W4 e: p' Y! K- g% {3 `' _( ]2 A" c8 l+ X# Y
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
* M+ j* c. D" z- ~2 K. I! N. {; q% g9 u7 K! M- a. f
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
) B. E/ O3 C9 Adde确实没用过,不过之前用过其它接口,不知道有没有共性。
3 q5 h: s) [, K( k7 A( K
1 m+ W) d4 n' ]9 P5 z触发语句是这样写的execute("        'cost'   ...

8 M/ j6 S& {  w" s5 w( J) _" \谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 1 q' M$ A, `7 t  |
taoyifei2000 发表于 2012-3-29 21:37 " z4 ]3 u  ^3 {. Y, J
dde确实没用过,不过之前用过其它接口,不知道有没有共性。& J) j- \0 l: W4 `

1 ^! G8 Q% x$ u/ ?* K% v/ f. r触发语句是这样写的execute("        'cost'   ...

5 {% o. j0 L. {2 p, [" M1 n- j" C1 _9 \# U8 V/ a
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
( w$ |8 B' a1 T( P9 |1 ]2 N# |: E1 |) ^  q
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
) A* S+ L9 |1 U, Y
若叶繁茂 发表于 2012-3-29 22:03
/ s$ b( G9 S1 |  h不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

( p, P8 s/ `6 Q0 T- ^1 }# S" f0 W0 k3 Q/ E8 D! |+ F% A2 h7 ?1 ~9 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
/ j7 X7 D% X" O; w; q我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

" V1 j7 |! M; h" Y( Q谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
% T0 B# {/ ?- x2 A* o4 H. }+ i7 ]( u& g) d7 F
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
" K! ]1 @( c0 X* \* i. F7 O按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
5 Z$ P! q2 O" h6 Yis4 e" a6 h) w/ K5 K) B
        xl: any;
$ x3 Y% D; R+ s& ydo
  y1 x# ^8 i; d( e# X* A& [        if ActiveX.active then
6 Z0 s- |* B# r0 Z4 \8 l5 Y                xl:= activex.application;
8 h8 q" I" C3 e  N: @- E, D( E8 Y& n! B& g                xl.call ("Macro_Reset");4 ~" j' x" {1 ?  b( n& N, w% Q
                activex.active:= false;' l! [/ _' N8 f6 Z
        end;
" Y( W* q  e% L5 A* L       
0 V: x1 g  \& J, N( K$ E! L/ yend;
8 x; T3 }% ~0 a; k( M! d( i' m7 r1 t, u
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~0 L; Q% }7 G. B+ z7 h
, b) O! s( `+ i: C
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-14 16:54 , Processed in 0.021242 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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