设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4966|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
! q: y% m3 K" S; w+ h$ `6 Ukanal:= DDEConnect("Excel", "Cost");. g, Z, w( E& P2 F
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);2 ]5 q- I$ y) |1 S7 Y+ K
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);6 z; Z8 ~0 d2 ~2 B
DDEDisconnect(kanal);
/ G/ n* h! _. g/ J' B系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
7 M8 E+ ^) v  e5 y6 `& A3 `! M) H! I5 J/ [+ h
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 / d5 D6 p7 d1 l2 M
+ l. p7 z* ]; z# H6 c
* a4 B  P% O. j% T* r
木有人理我么?
1 s2 K% v6 t+ e+ v5 H) M2 G  q0 d& O& Z4 |" r9 V: E! U
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:, Y; H$ Y% N# ?" b

  P2 u1 C0 c2 C4 O' X' @: NDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
- F0 n' ~4 a. i
( x: f4 f: A5 P; J$ z. u& l6 d( v但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
' o% n8 v- H9 L, A9 w7 ~5 Vdde确实没用过,不过之前用过其它接口,不知道有没有共性。
8 j% U) c9 P4 w- X& s3 E7 a0 U
  L- U3 f% Z9 q! _触发语句是这样写的execute("        'cost'   ...
: S* u* t: E( V# V3 h5 Q# Y
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 5 C/ R9 T  ^; g  _- k
taoyifei2000 发表于 2012-3-29 21:37 . Y# X& [$ v. B7 n$ m$ I
dde确实没用过,不过之前用过其它接口,不知道有没有共性。, w9 W& Y  y$ P' P+ u; l# N
8 `% g9 B+ {! R7 J3 C
触发语句是这样写的execute("        'cost'   ...

1 y9 s! A/ u: \8 a0 P
. o2 |6 s2 q0 o2 X不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
% F! D: S' P* v+ X3 {0 q* i( v
# r7 g/ a1 q( e( e& v$ |3 {/ [诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 " G4 P% Z/ I' r
若叶繁茂 发表于 2012-3-29 22:03
2 Q7 C" d4 G7 B' i) G9 N( k不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

, A9 Y, B5 o% c9 a
) u" q3 Y! \2 M+ {2 q4 p0 i: G我也没用过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 ' Q% U% ?% q! [4 m4 k: l
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

* \/ |: T8 ?; m0 G谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
6 s* f  w+ m& }: h+ O9 G+ ?3 c
9 T6 F7 @4 n( P我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。' @' P) q; r& L6 W# u! p
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:" m7 \  {2 R5 u5 B+ }& V) k% @
is- A1 `9 i+ ~4 c. _. {2 {4 F
        xl: any;
5 `) C" P9 G4 w$ u: ~do; j" ]. f) |- p  X: Y: e
        if ActiveX.active then8 F  k) q+ l! y$ _3 R4 J
                xl:= activex.application;6 r3 q6 w+ `5 d" a
                xl.call ("Macro_Reset");
6 x7 g: i+ W$ b7 G' H! ^2 ~                activex.active:= false;9 t: W7 g8 e' f% |/ w! A
        end;
) k. s" @* k: A% |        ! X. a- c  E" C0 H' R
end;
% L8 f1 p' ]" g- T7 v8 u  z" r2 `  w* W
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
6 b1 u8 Q; h) F" G
) Z' Y+ p. C% N4 A$ f' Q! b期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-12-19 00:29 , Processed in 0.019883 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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