设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4311|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:8 y3 M0 y' t$ X& }
kanal:= DDEConnect("Excel", "Cost");$ K5 t1 A4 _9 H' h- P
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
( u; Y3 q& q& e% v! ]+ s3 xDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);+ O$ k' B5 O' x( P: j
DDEDisconnect(kanal);
6 n7 I4 o) t! }: ~  v7 t9 g系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。* r5 @& T3 T& J" \" \( K: \
, p0 w0 u$ \0 \3 h- k6 d
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
1 r5 w+ _% O5 I% I. g
5 q2 L& D* J* i9 H: Z$ t& p; [: o, i$ H5 c1 c
木有人理我么?3 L8 `9 Y, C! \* ^) m0 i9 j

8 Y* n4 M) C' G2 e( x( J0 _我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:# Z7 c! ?# Y: O  f5 e

% c, ?; E: Q& q2 x3 L! mDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);4 f7 O3 x/ f( Y0 w* ]* o
8 |! L9 s; A) [7 Z% |
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
8 q5 N( q0 e! x$ @; |/ Udde确实没用过,不过之前用过其它接口,不知道有没有共性。# z* I( i2 D; H) B, r

5 d+ d: O9 j3 f4 u' e触发语句是这样写的execute("        'cost'   ...

* g( g" p9 V* [5 D8 ^/ n谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 9 p& m% L  o! M1 h
taoyifei2000 发表于 2012-3-29 21:37
+ [) Q+ P) t7 K1 ^% w" A' H% ~dde确实没用过,不过之前用过其它接口,不知道有没有共性。
; h' C  M. N0 o0 K% L: u; {$ F# I* {, i- p' S
触发语句是这样写的execute("        'cost'   ...
/ u/ E3 n5 d0 i

1 S, R6 |( [9 x: J/ N- G4 _不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。1 s2 W& X$ D/ J. Q- d
/ r  z4 E6 C3 `% z2 l/ A  d; b2 Y
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
; ?1 V7 {2 {& ?7 D" O2 j5 F
若叶繁茂 发表于 2012-3-29 22:03 ' ?7 X: ~0 C- Z. g( r8 a
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
- o2 W0 Y8 D) o; ^8 b" |

6 T3 @, q" c% g( f我也没用过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 6 ?+ a; f4 l; V1 ^; V/ X
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
$ Y( @# ]( u5 e7 U# n. Q
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
2 b7 s, r0 j' u; j7 b9 l  Q& g# s
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。- c0 K) f- |  m% G
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
4 f3 G  S. ~& k7 X  P0 |is$ }$ i8 M1 `, r* _
        xl: any;
! ~! c8 o0 [7 O. a/ Rdo. R* {" v8 S0 a: L2 b& v
        if ActiveX.active then, o: L, Q( S* `9 D4 Q( `  `( L
                xl:= activex.application;
+ {% C. B6 ~7 g; G                xl.call ("Macro_Reset");( E2 o1 m% ~* X
                activex.active:= false;
7 g1 e& g3 K# z        end;, v' K9 ]' c# q5 |8 N3 }6 B
       
; r! I9 C. b" l5 C4 T" Fend;
0 q3 |+ Y% N' A. ^. D: B
0 }' l  u2 X3 t( b* S显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
) E& V4 R: }) N
% C/ H+ G& y9 `2 R期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-22 02:13 , Processed in 0.019072 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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