设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4969|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:2 Z  w: G5 |, f7 f* s  o
kanal:= DDEConnect("Excel", "Cost");
1 V; {& u8 `+ L. u0 x0 Z' d- y6 sDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
# z" d& g  Q0 [DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);0 g. R& d( k0 X
DDEDisconnect(kanal);
8 {  R' Q0 W3 l; A系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。/ J9 l2 `8 h9 f5 ^& P! S

$ }6 ~- H& n2 o0 {请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
5 f; S. c$ d* T' b+ B) m; c$ C7 M4 t* B
) D/ D* }- i7 Y, O+ ?5 C
木有人理我么?7 b. }2 y5 h7 y( {! c$ @8 E

+ b/ h' z' N" b9 V' W我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:, `0 m4 |) H; Y4 p

/ U4 _" M& q6 m) d% S( dDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);2 R# L. W. X* m* `: Z2 H& V

/ R3 H3 {) l) K4 C4 C6 D但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
0 n( M, n# _+ e+ K9 K+ U7 W8 ^dde确实没用过,不过之前用过其它接口,不知道有没有共性。  o5 @0 C- r+ ^9 Z
9 }# `0 [5 S+ m- k6 j! j
触发语句是这样写的execute("        'cost'   ...
4 A( [. e3 }/ m+ F: \3 h2 u
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
+ X$ F, s7 m7 ?, [( o: B
taoyifei2000 发表于 2012-3-29 21:37 : M9 @, K" f6 o3 e" g0 t4 j
dde确实没用过,不过之前用过其它接口,不知道有没有共性。/ Q7 D* y- y+ P  @
. K# a" M$ P4 [/ Q! ]9 B
触发语句是这样写的execute("        'cost'   ...

/ g3 J9 U$ B  W6 g4 p$ ]; \
( r/ q( L6 q5 b6 f不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
( {5 Q8 I6 l9 k8 i
0 O$ m1 x7 h/ C0 }% [% d/ a诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 7 G+ F; \& `7 V4 i6 ?% O6 z
若叶繁茂 发表于 2012-3-29 22:03
# H; c/ Y. b0 V! d8 Z3 J不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

  q# S2 a, M' E4 @! H9 ?# `% U' V0 c8 T- u" s. Z6 @$ c9 U: w6 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 # N) Q$ u; Y5 _4 g3 s" j; s4 ~
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
. R, U( z' O. \) O7 n. f# u- H
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。* b3 o. j; S6 @6 V5 ?1 @+ \4 K% _  Q
0 y, l$ t0 G5 n. O; s: u& H
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
4 A; r+ |; G1 }% F按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:8 \) Y+ }& y; V8 [- Y1 `
is
. y* Y2 ^, j6 V4 I( q0 D- S        xl: any;6 C6 e0 p& W) U  l# O- E: S
do+ i# K$ o5 n; H. G
        if ActiveX.active then2 j( r1 z! w: P. Q# I
                xl:= activex.application;
3 Z" k' u; C& m; B                xl.call ("Macro_Reset");
( I5 `6 o. |$ T3 q                activex.active:= false;
1 J8 |* }( e( t9 D2 r        end;5 ~# ?$ j* G  I& @
        ) Z) `, z/ n; t% I, H  a3 p3 w
end;
' r2 O  T  s& t) U8 N% r$ r) \  y, ]
/ W1 h$ E# h* X显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~/ g# E" l. @/ v7 k1 C# t* y. Y
; z+ P& K; E, g+ }2 B4 n* F
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-19 10:56 , Processed in 0.019655 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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