设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4709|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:; _' d/ e$ V' v5 L9 _" }. h0 N
kanal:= DDEConnect("Excel", "Cost");
" {9 d: n9 s3 u& N+ mDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);9 m& o! D( S0 A, V- I. }
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);) b+ V* |; q; e8 i% @
DDEDisconnect(kanal);) t$ F* }3 e7 p- U. y5 O, N; f
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
( q2 V) j- ~; C3 {, I& D# I! O9 F, W2 L7 E* l: j# p
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
9 V$ J5 ?1 d7 U. v8 K& S
( V* ]* I  D$ o( o) U. t6 h& k+ g6 ~; R1 B
木有人理我么?/ n; Z* w( Z/ D. v
7 A- G$ j) H" @3 r, I: T3 S7 O
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:4 V7 o$ O) J0 n5 K" J* Z. q

7 J  O- |" d3 _& m1 `  c7 hDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
$ E! D  `" Q' R" W1 o* Y% H
1 r, j, N/ e6 }4 m& i% ]0 a, Z但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
# m+ n5 b2 i8 c& J8 ]& u& P' ydde确实没用过,不过之前用过其它接口,不知道有没有共性。: X3 _& v) w. s7 ]

7 p3 q  D7 t4 h$ W1 L触发语句是这样写的execute("        'cost'   ...

+ C4 Q! [$ J+ b谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
0 z$ h. W; E6 K3 i  _& w
taoyifei2000 发表于 2012-3-29 21:37
$ u$ \# a) O5 E# R4 A, odde确实没用过,不过之前用过其它接口,不知道有没有共性。, `3 |4 V6 ^  G2 G( \$ d# Z
0 ^# s( S( K; N  |/ L  u1 y1 _  H+ J
触发语句是这样写的execute("        'cost'   ...
8 Y6 ~' p: y5 Q

% b* h5 |9 C3 O: F1 x不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
' P: m9 i+ Z. ~; {! [1 S( \: v5 J, i$ D1 o% E; K4 O5 d
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
3 X/ P+ W, F' g, M1 t/ m
若叶繁茂 发表于 2012-3-29 22:03
# @3 R( b& o4 K- G不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
/ i2 ]3 l5 N+ i1 |; s4 i' X
' B0 i6 j& k" ^  X
我也没用过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
' k8 w5 N* n* h" e0 j; D我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
- H# d6 |& g% a: `6 i: i6 \
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
+ h8 F% S2 N& p5 T+ Q! m( Q
) h* R3 i8 M; ]# U" U2 f/ ?我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
8 ]6 V2 R- x5 }* w2 v5 T按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
# }0 D2 U  @& p9 `$ M& uis
( \6 Q, _- Y4 h1 e        xl: any;* ~$ T/ M$ \1 Y3 E( d& K5 h/ \
do
2 p" s2 C; S: S! }( O        if ActiveX.active then" H* F- n/ u* r7 i2 A
                xl:= activex.application;
! x9 J9 F1 n& {0 U: r                xl.call ("Macro_Reset");( K& a: R! m1 M' n3 _4 I
                activex.active:= false;- A9 x) P# T$ F8 G- c) q
        end;8 |1 }9 Q& A- U2 j) l" U
        ( b, b0 W+ T, x9 r4 f. U
end;0 J7 K; d7 a' B2 ~6 I

& q+ C8 R; }, j' @, Q( L/ P0 p显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~& W" T5 A$ F* V; D1 Y/ u6 _) d: j
: {5 J( @4 }  b6 e) |* D2 I8 ?1 ~
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-1 10:18 , Processed in 0.013740 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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