设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4161|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:+ E" G1 l7 u+ }4 F+ H. V
kanal:= DDEConnect("Excel", "Cost");1 K, H3 ~# I$ v; n
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
# z; L6 G6 A, |DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
& n4 W+ N' ~' b. b4 MDDEDisconnect(kanal);2 h- z2 K7 O; i+ z
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
! m( G1 ?* c5 \5 s2 b7 \7 ?
, }. E$ X, B# H3 s, ?请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
  m4 S, N1 q( r2 y5 ]2 H+ c1 q' Q- T
$ M* e, s' o$ e: d
木有人理我么?* b6 m9 J' W  m* r7 r
- R) W' p' t" P3 ^
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
3 f: q  ^1 v+ D6 y2 O5 ?& B4 ]# U4 {3 {
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);% q5 H% _; e; y& Z
: Q3 d& R- ?! j0 }% ]
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 - H7 r0 ]1 k9 }8 `0 [/ B1 \  ~
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
3 R) q  o) D4 ?% o
7 V; ~  j. F" s0 W$ T. h$ j' |0 p9 U) r0 L触发语句是这样写的execute("        'cost'   ...

# @/ B4 m3 z( i; E4 c" d* O谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 # n3 z( g/ |' P$ V
taoyifei2000 发表于 2012-3-29 21:37 ( O  t% s9 \# c9 t' m
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
0 L* J0 _7 |* ]: }* L) m
  }/ X+ V0 |; f/ e% X触发语句是这样写的execute("        'cost'   ...

1 y2 u; F- l' ^4 [0 W. w3 ]- o9 a4 m, u4 C3 h9 d
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。0 G, U  ?' @7 b9 e
/ I5 Q: h) P3 c) V5 Z8 N
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 & ?6 s& k# l2 W% U6 u
若叶繁茂 发表于 2012-3-29 22:03
6 O+ I! f( x4 i+ c不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
+ a! }% o: O  d: I( U$ j

! D' f& q1 p8 g  u# 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
" J* K: T6 G$ I' v) l我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
8 _' Q% M' g# U3 l. f; j( S, B9 Q
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。% |5 i4 [/ O' d( x. o- m
; S+ r0 l, }, N) @1 y# X
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。$ p  L3 j! T/ ?. L
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:5 |) x' a8 g4 G4 m& _2 O- _: l
is
' q$ A) G9 d; V, U1 Y* M        xl: any;& w4 o7 R, {  }* d
do
" L  o! G+ O- p. \: P; y        if ActiveX.active then
& F2 o% H, V# Z' _4 i                xl:= activex.application;$ H1 U5 v1 Z4 V
                xl.call ("Macro_Reset");
" ~4 i+ W# f6 Y$ k7 y; t                activex.active:= false;
/ Y" `; @7 \* n( O7 F        end;
! P& o6 G8 Z. x) s       
) C, F5 _2 h$ c3 d6 Fend;
9 l) h. q: j  M; X4 Z6 y$ u. D& a# {( i3 |  Y7 J" L
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
  c  ~' B, m6 s) r( ?8 H0 o7 n9 @3 X+ \+ y; `# L5 ^2 j; _
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-4 20:41 , Processed in 0.014823 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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