设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5495|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
5 ?: s$ U% W$ }) _3 R* n+ a" qkanal:= DDEConnect("Excel", "Cost");0 W: r. }( _. W/ G/ G# {
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
2 s! r' ?% u+ K$ g: UDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);- @6 q2 Z6 K& K& B
DDEDisconnect(kanal);
% Y4 s$ L$ m% N7 A9 M, R系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。& K0 i2 c- e  b2 D6 A6 O! v* u
1 A: E- G3 w4 [8 Y2 m$ Y
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 4 s; s) z% A2 w) z) W; ]

6 f4 ~" ^& b( J7 [: {% O5 H
  b0 F1 n4 k& E% x% i木有人理我么?
- q: O+ Z3 J5 [4 H8 f
9 s6 j( q8 ?) e0 V我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
4 q) c$ M4 H6 i* ~+ C, e9 a- g5 M) E7 H5 z/ O$ V' C
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
; H, P8 ]$ ]5 m/ ]  H0 q% b$ n! K/ R
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 6 D; E1 [) E" ~5 u3 {  P% e
dde确实没用过,不过之前用过其它接口,不知道有没有共性。$ u% A/ g3 A4 l* H* Z

+ ^8 U% ]/ d9 a; Y4 H' I' V触发语句是这样写的execute("        'cost'   ...

6 W! i# ]7 W& J' P4 q$ J1 F谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑   X  Z& c" c$ E7 ^
taoyifei2000 发表于 2012-3-29 21:37 % }8 F" T# a0 k& J' U
dde确实没用过,不过之前用过其它接口,不知道有没有共性。. B$ {, ^3 [* k1 @( v, u3 V
) ^( g9 B* S6 U6 p8 [8 w& j
触发语句是这样写的execute("        'cost'   ...
, X- y) o  J% V$ {
  A8 @: Z" k% Y4 E: V2 F2 R0 T
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
6 d+ H  m5 o/ c4 U
5 B: N% ^+ X7 ]& Z7 G* s2 Z* d- B诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 7 F1 \# i' b  w, D
若叶繁茂 发表于 2012-3-29 22:03
: v6 G; B- x3 p# S' [不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

% \3 m3 @, j) v6 W" N4 M- Y3 a2 I2 i8 {! Y4 d7 P$ f- h
我也没用过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
( i4 w0 x4 [; @' `我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
/ E5 l& [, [' Z1 z: p+ l
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
* w2 L6 q+ E$ B3 k# P
- \- e6 h; u6 [0 c3 |4 G我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
$ y2 y( E3 l$ q3 e0 S, T按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
! l/ s% a/ J& X0 e9 R# s8 Kis
3 }' X: Y$ D8 ]8 }, w- |; d" G5 r        xl: any;
, m7 e: S( \/ G$ R; g9 udo
! F9 X7 O* ?8 Y" Q" ^; N; g* ?        if ActiveX.active then3 l5 M' w2 G" a6 ?. E- F
                xl:= activex.application;; }7 \. e# o, `* a) ^: D
                xl.call ("Macro_Reset");
" K( A- N, _: p- X( c# Y                activex.active:= false;: r  ~5 d, D- X4 V4 g( M$ o' V
        end;' _9 z3 T) e2 X+ B
       
+ T- \* D8 e- r. J$ L0 Mend;
2 ^. Y' q0 T! k3 `0 M; h4 j& h: \$ A6 C
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~/ O, t% ^' D% C6 J/ x; Y  x3 L% O
# H" D( g- E- n! \# F( c
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-15 00:36 , Processed in 0.014799 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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