设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4163|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
" {: F, B' i2 s5 Xkanal:= DDEConnect("Excel", "Cost");
% g5 ^- o8 C! q  JDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);1 |0 A% U$ G$ ]/ ]7 L: D
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);- Z' _. S% m9 l1 d: K
DDEDisconnect(kanal);
+ I4 x7 O. N( o系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
/ e4 \- n0 H* i9 L4 I* k
/ s8 C3 ~; i' u; A3 B8 L( a请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
8 M2 m: M4 e6 ]" t2 X$ n/ C" G2 Q! `
; m3 Q# s) @( W. g; X; o- l! `
/ G- Z5 @0 m3 M# s3 |7 D$ h木有人理我么?5 I6 A5 q# I0 o) \. h/ N: W1 q

% k: Q3 B; n! ~! C% a8 T我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
3 g6 ?6 ]* T: C, |' @- W6 g; Z2 {) h% R- G
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
2 J2 B4 o* [5 G/ g, ?* g' I% |; d( i% G$ T; h* H! L
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
3 n- i5 s5 h* x2 [( l" A" ~dde确实没用过,不过之前用过其它接口,不知道有没有共性。. ^( ?! b- {! S0 t5 W3 R

5 _% q' f. D% _5 m触发语句是这样写的execute("        'cost'   ...
6 G8 G; d0 h$ n( A# E
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
0 _) a! ]  i; `) L
taoyifei2000 发表于 2012-3-29 21:37
0 U+ I6 v- e% w  v" d5 Adde确实没用过,不过之前用过其它接口,不知道有没有共性。
3 \( ^/ q1 [! ]
: C' p, ~0 p: j* m触发语句是这样写的execute("        'cost'   ...

# a" s5 g5 t* V% `# j" p" @- l# |" l# ~6 g1 C  T
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。) v" L/ A9 d: a. e& c" T- m4 s

  K1 e# u# O6 K4 x' g% |. c$ b) U1 [诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑   O$ L7 m# ?$ T  @, @
若叶繁茂 发表于 2012-3-29 22:03
% K. e; b6 h; s/ Y  A$ }不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
3 [( N" j+ |; C) w9 d

  M+ {7 S  |7 Y; x( r我也没用过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
5 R" Q) s) n, |2 Y1 }我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
4 s+ E6 m3 ^# o' \0 k
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
7 U) }5 ]; D4 @6 S5 b3 J% ]) k
1 \2 c& z* P- W6 w, p% W; I我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。. c; @: T; {. g+ ~0 L8 v
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
1 e4 e+ ?5 t# f& his( z9 q4 t  B# y- J) Q5 {. Q! Z; {
        xl: any;
3 I6 _0 e; }% z: Z0 a6 Ldo8 t( D' v+ P- X+ o! R' x, Q
        if ActiveX.active then, r6 K: K/ e0 d1 n+ Z
                xl:= activex.application;+ g5 n1 g6 X" v3 ?3 y* q
                xl.call ("Macro_Reset");. o2 @  ?6 v7 e
                activex.active:= false;" T  N* z6 O/ l# X+ X, Q" X. y
        end;
9 W, y% [. A& `9 }       
/ z3 q* S- g$ E0 u. zend;' F1 \3 ~# K1 J& V: x) ~1 b

4 N5 @( W6 ~8 Q% v显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~' U6 F5 P" h+ x! c& N
! i, n, M. {. q0 p
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-5 03:08 , Processed in 0.015135 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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