设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5619|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:, Y/ ]) l2 X. [/ U# j
kanal:= DDEConnect("Excel", "Cost");% u2 \; b/ c1 F' f. o
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
* B* k5 p3 [2 Q; T) gDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
1 t) L2 h2 _* R, Q! @9 JDDEDisconnect(kanal);! W3 J# Q% m# G8 u1 a5 A
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
8 c$ F* E8 b4 _" Q' e  i- B7 K9 L" R8 }
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
& F) V6 F9 N8 f' h3 b% x: A1 Y

3 N6 S( [& A: S7 `/ r0 G木有人理我么?
& H- \: G! z" h" _
5 T5 I+ {3 K$ |5 e  g我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:+ P6 P, P* L- |  a3 M6 v- w

! ]* d1 k4 f8 k, QDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
5 r" J/ s: y6 J/ {7 \; N. a/ ^4 ?2 N0 ^! P
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 1 ?4 W: T1 X' N/ P2 ~2 l
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
( b4 u! j8 [+ D( A0 h1 M
  _* W; P2 N+ K0 H& R. a触发语句是这样写的execute("        'cost'   ...

' |5 I1 x) U! r谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 7 C5 _! U; d5 c( P. [" q( [$ g
taoyifei2000 发表于 2012-3-29 21:37 : k: w7 M1 i! Q% X/ A& A
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
" i) e5 d& w5 m. m( A! h4 l% L' _# E, a5 X
触发语句是这样写的execute("        'cost'   ...
7 ], W( d3 Z% U* c* J
, ~6 ~  g/ M$ d5 F0 s3 }. f* M
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
* O0 h8 }- Y& x) s) t% R6 j% o
/ H. Z2 M" a5 C( d诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
+ Z$ T! L; X' o) P/ w4 ^
若叶繁茂 发表于 2012-3-29 22:03
  Y. `$ f! x: F7 G8 V7 x! o不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

8 N8 o! @' b5 Y0 [, T" z* j+ @; l  s$ `
我也没用过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 |: k  t2 i6 h9 ~6 Y
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
, Z* q& w; O) g  D  {" d* |! W, O$ |
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。; c8 P. `/ B# `6 v% y( ?, R* R

: t5 f/ F; }. x. x我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。: C. P: P9 u$ M& [
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:3 l7 d8 m, }0 j/ |+ F/ `" `
is
1 Q' j) [7 g$ f        xl: any;# l5 Z2 k/ `* R: ]" ]$ u3 w
do2 O! H2 \9 g4 e$ b2 Q
        if ActiveX.active then
. b7 t; q: P) D) B" N$ A# F                xl:= activex.application;
1 s+ r" ~9 f" N                xl.call ("Macro_Reset");' K, T) V# N$ ]' p. V
                activex.active:= false;2 H2 N$ ]1 d+ L6 P& ]4 K
        end;
5 ^* [0 z. o" q- V% y       
' g, [8 C4 z4 G. [: s% p* ]end;/ w7 X9 ]. m2 d" B4 R
/ C2 a9 i2 ~/ P
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
% [) @" Z7 e* Z) J; ^* c
- P' ~7 Z( z+ V) a期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-26 18:09 , Processed in 0.013197 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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