设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4401|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:, K0 w0 i; g0 ?& {5 C5 e( [
kanal:= DDEConnect("Excel", "Cost");0 }% w7 d8 f8 g9 q
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);9 ?( z8 k# d2 w* i: l
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
, H' O7 F3 E* E' }+ S; C. LDDEDisconnect(kanal);; Q7 j; U( i, C! Z
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
) M& C" A8 l! [3 K, [' A
- h' Z% ]1 S; F请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
6 I$ l6 f2 ~( y8 _7 O* B  p+ L* n
# X+ t7 Z/ \* f0 J
% M2 c. ~9 r7 a7 F6 O( H6 u* x木有人理我么?" I3 `* {4 k& T5 n6 }% b
- {: _+ O3 R% j+ T
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
6 `2 ?$ c4 C0 G" }* R2 ~' ^6 r' R2 _, A3 f6 R2 A( r$ ?9 k4 u
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
2 Y3 D! n! j. r+ g: E6 I7 b6 @# g  a9 x4 n, a5 D
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
. f4 S0 u* Z( V% e3 ]# gdde确实没用过,不过之前用过其它接口,不知道有没有共性。
; p2 I+ w; G; J- U
# ]( }' l% C1 W$ s触发语句是这样写的execute("        'cost'   ...

$ ?& c/ e% E) ]. k. y谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 3 i3 \% |; A9 b6 P* a9 P  J
taoyifei2000 发表于 2012-3-29 21:37
' f7 E. Z! P# Y8 I7 Y+ S* [) }dde确实没用过,不过之前用过其它接口,不知道有没有共性。9 `' P7 I& J. J$ h/ S

  g' M* K- [! y: a2 Q触发语句是这样写的execute("        'cost'   ...

/ z; G$ K3 w! ]# p* L) {" Z9 y+ m9 {0 o# e3 M
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
9 P0 v1 r" ]' l& N  O
  f1 _% o7 E  k诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
, \, B4 [& |9 u! t( @! O& U1 A/ y! m* w
若叶繁茂 发表于 2012-3-29 22:03   f: Q; x+ @0 P) [8 p; ~7 C
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
5 q7 `8 p. t7 \% Q3 G1 U

* z! R: W3 }3 X* [- Y( T8 a+ ]我也没用过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 H" J; r/ G+ m
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
5 c/ B. e! z+ C, }3 \3 S* l- n; Q
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
1 u7 x+ `- @, t' i2 V: n* r6 U' I2 ?1 u3 s* C5 I4 d8 S
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
8 O4 I- M2 @" e  Q8 \按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
# K) ~( M. m. Q" Ais
) e8 r; |3 R: f0 \+ ~& y! x/ ]        xl: any;
4 |% X3 N7 h8 R) ]4 vdo. {% k9 K- D/ |# I$ z2 A+ D
        if ActiveX.active then
  }9 D& t6 r" L0 B                xl:= activex.application;( M# C$ L8 ~/ J0 Y% R1 K
                xl.call ("Macro_Reset");
  B- t3 l$ w1 s5 [7 P- {                activex.active:= false;7 f. F  Q: c3 \
        end;
9 H$ o5 T( `% u# m9 h       
% _3 T) P6 Q* ~% gend;5 F/ ^4 A9 [. \4 A
! v4 b7 A* j% C8 R( G1 f9 p
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
% Z, K  e* `* `% i) ~7 w
: ?* S0 H: ^% J6 U期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-11 00:21 , Processed in 0.016458 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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