设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4160|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
* @0 a' _' c5 A! ekanal:= DDEConnect("Excel", "Cost");
+ B, \! h$ k# B  {. R, t) CDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);! v% s" Z- C1 H  t
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);( [1 m/ f1 e4 X' i- n. E% O9 C
DDEDisconnect(kanal);
3 X3 C* V6 E6 b% u& Q6 e1 Z系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
" R9 T4 S, @! {* Y, g' T9 B  }7 S! [5 j# h/ f8 s
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 " V- x4 a& ^  U3 O2 X) ~

+ C" d5 r9 d% e7 [( B
0 F/ _6 x; X8 x+ d木有人理我么?
( X6 }, [# s. M2 v8 C
+ u  |- t8 r' L) i, e7 U我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:$ U! C0 r9 D! R$ ]
5 C8 Z+ \- d0 J/ H1 y+ @
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
5 W. f6 a" R1 h. E$ R' _, z# D" z9 \) |% [: h, \
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
# O& p+ D& y* M9 `dde确实没用过,不过之前用过其它接口,不知道有没有共性。2 u, T' d+ V+ c# c' J: `

7 F* q3 Z  A+ V  g. r+ x触发语句是这样写的execute("        'cost'   ...

6 f$ h( \: X8 _. ]# C3 c9 r7 u谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 0 v% ]1 _1 u, @
taoyifei2000 发表于 2012-3-29 21:37
1 ^+ O, w& F$ j# Y  v3 P+ }dde确实没用过,不过之前用过其它接口,不知道有没有共性。
( c$ B' e% X1 K( @9 T4 {: n1 u) Z
2 y& Z( B; `7 g, o! X( `# T/ H触发语句是这样写的execute("        'cost'   ...

) w- h9 `; i9 L& R
9 z; ]! O1 Z6 G! O不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。$ f2 a0 {- l+ U- \1 Z3 m( G2 t

$ k( q1 K2 c& r6 b诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
1 V) B4 b: B1 H0 ~" D3 H6 h& |
若叶繁茂 发表于 2012-3-29 22:03 5 N- p& H, s: j2 d8 U( u
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

/ f! ?; K( ~( X, Z2 V5 h4 ~
6 g& C2 J' q8 ~1 z# d+ _1 `; u我也没用过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 ! t0 ]6 S# Y: e7 Q3 {0 M
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
" @/ O+ G7 n/ g
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。- x, \; A2 R6 @) _, i

2 U6 ^& T, l5 x* u  D6 [我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。+ T/ u- J" i/ |" \8 {) G
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
& I; c. `' B, ?" I6 K6 gis2 {8 n9 v) b# R
        xl: any;0 j2 @' I. }4 J. I+ i3 A% n
do
8 w  L9 t3 r9 l: X: L8 X5 w        if ActiveX.active then; z# C0 M+ e8 D) H. _
                xl:= activex.application;  D' k: S- M+ H2 T
                xl.call ("Macro_Reset");/ Z1 w9 m% y9 f1 Q) B6 u; g
                activex.active:= false;( k5 ^! ]0 W" M3 p9 D, U: \2 q
        end;0 t0 o" Y+ M# X  l4 L
       
+ t5 u( u: _; q4 T% G/ ]end;
! N7 ]% U5 z& C5 n- l9 s1 D* H' T, u5 ^6 W
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
9 z" Y% k2 ]3 F/ o7 R6 ]) x/ J: j$ g& [% }" r; ^+ d
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-4 19:55 , Processed in 0.017826 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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