设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4175|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:; ]+ i  [8 w0 ?- x, o7 A! c, W
kanal:= DDEConnect("Excel", "Cost");
1 s/ ]2 V0 }1 \. F/ ?DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);, E, X* @1 y" p1 [8 ~
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);7 E2 h1 c" T- I, S& P& B
DDEDisconnect(kanal);
. y4 m, C  p: N2 o5 b3 P& s% w# }. i系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。; b4 B% T) f6 ]) n  [. J4 A3 O/ d" ^

3 V; _2 Z/ H' x4 Q. Y( D请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
5 b  D1 Q* F' a2 K+ a, A1 I- @, `- W; V5 }# O7 ?& q( s$ E

. I( v! ^2 z: r, E木有人理我么?
2 Q; E# A. `- h! }* @& Z( ?6 O+ P- b/ b9 v. l- l: t
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
1 z% @* w& w( l) E7 _  E# b$ y; k5 W* Z9 D* l: l: M
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
# b4 V* G& ~6 n2 F& U' R6 S& r. {% [+ p4 y4 [
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
6 S% r' O2 e  h8 {  Kdde确实没用过,不过之前用过其它接口,不知道有没有共性。( E- ]% S0 U, y5 t* b9 d/ c4 x- ?
) b6 ^# Y- ^0 ~$ X. }. F5 n
触发语句是这样写的execute("        'cost'   ...

, i: H: g! |( x4 {* J谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
, b6 P/ t. T9 Y, V9 F- j
taoyifei2000 发表于 2012-3-29 21:37
$ Q3 ?+ s# ]) u: \& o: ^dde确实没用过,不过之前用过其它接口,不知道有没有共性。
, t) }( B# Z7 b& V8 q( i6 j  U5 N& k) \8 v- Y$ p
触发语句是这样写的execute("        'cost'   ...
$ R* j  t% ]' D1 \2 l2 P

' t- T) t2 o# t+ s5 Y不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
3 j9 L1 Y& y) `) V, j
" {, l& F5 m" E3 O2 T- |诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
1 t& ]( m. T( p$ _
若叶繁茂 发表于 2012-3-29 22:03 0 R  x# R4 E) _0 A8 d4 d( _
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
$ y9 Q0 K4 E1 f! `

' A9 V$ ^  P! ^7 T我也没用过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 ; b) G& q! I# |) [1 Q  Y- m2 ~  C
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
" t0 f1 Z+ b- |! f3 V0 Q2 l( o
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
& Y9 I$ f/ u% b+ g+ A" D
( L( t4 E& ^' X  E! G我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
) d/ e4 [  r3 F& E0 k! B9 p! O按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
( E4 `& C1 S4 v1 z+ D) dis
# h  `' C1 q9 l. E        xl: any;
" ~5 `- e( g! {" N( Kdo
7 L" R/ [- g- o1 C4 e        if ActiveX.active then
2 R8 _4 q+ e) b/ ~1 Y8 u                xl:= activex.application;4 U/ @" P8 c7 j( r6 Z6 q) H
                xl.call ("Macro_Reset");
5 H" J3 v! {7 v9 k' m' J' v; C                activex.active:= false;
5 R8 b' U9 @6 W, |( f2 H0 }        end;0 t5 u) B# @5 @$ U$ _' \
        1 G* b; |2 M2 T. P/ ^1 k
end;
7 [. L  R6 t- U: e7 r* o8 t" A6 \) Z' x0 S& O
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~9 I; o) U7 P( S9 ~4 |* F
' R, O5 O6 h" g- C% [7 P% W6 g
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-7 02:54 , Processed in 0.018648 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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