设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5104|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:: ^+ X; G$ c0 z% m# I
kanal:= DDEConnect("Excel", "Cost");, K$ n. s# B- N
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);+ w* Q  U5 {# ]/ ~0 Q. k. S
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
& v8 h  {; }' V) b( GDDEDisconnect(kanal);( ^$ y) E  ^' L( l, {" H' G# x7 f
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
- y2 R7 s4 E4 m% c$ B
! I+ I2 O- E' o% ~' z: s" T请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
7 Y/ T+ Z; R3 K6 C" [$ G2 p) I) ~" F# W
/ w8 B( F$ X, |
木有人理我么?: l) v! Q" {" T

0 @) t5 z1 F4 \. A: m0 K9 l我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
% _8 d$ U5 z+ b+ D2 z1 S( b$ d8 J+ u" A0 g
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
0 M. `0 O# G$ z; |) x% H
% `) ]0 o$ l8 c但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
& Q% F* ~* R  H$ Jdde确实没用过,不过之前用过其它接口,不知道有没有共性。0 \3 J( M7 @! j" ^- ^( t+ r

. p. {7 p+ t- g- X3 V  C8 _触发语句是这样写的execute("        'cost'   ...
! l) x7 b' V8 L) T! R$ o$ k
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 9 X( _0 z' t; b# D* e' I" ]3 D( G
taoyifei2000 发表于 2012-3-29 21:37 & ]9 F2 W) s8 q5 D  z1 B# b; L
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
* A& ~$ V' e( t/ t
' V0 ~& @( C1 Y5 {5 L% I触发语句是这样写的execute("        'cost'   ...

$ J, l6 [2 v+ i2 Z+ t) w- h
/ p% M/ V' \0 u5 K不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。5 ?, G3 z6 D3 l) l' s# N
2 w. f& S1 k' h" y
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 / J4 L% w1 Q* I% s5 b$ [
若叶繁茂 发表于 2012-3-29 22:03 4 d( t, d: {( c: m
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
8 x1 \. a" k. ^& E* K
5 I( a! u* u+ U+ [, ~- u
我也没用过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
3 ?6 |' Y$ o& q) J* Z/ g# J4 l0 l我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

4 a. e$ X' m0 f4 T9 w( H: s1 g谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
  C2 F+ L6 w! x: o- F
+ D, V' E; A6 F5 v* k, e我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
" ?3 C6 u+ N7 t3 x7 p; Z. E: {按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
7 Q: Z9 i5 h" b) Bis
# P1 y9 S8 K4 _7 e        xl: any;  Q( t, s4 q; N2 t
do: H6 ]7 |0 ?/ ]9 i" k) C( |
        if ActiveX.active then
4 y% j, n7 }% ^                xl:= activex.application;* ]0 n& K5 x2 e0 ~
                xl.call ("Macro_Reset");
  n2 r# P8 }$ B                activex.active:= false;
' S5 P8 q9 e8 {9 e        end;
' F: x3 J9 B5 e2 h4 K; i       
/ }* S( W" X# J$ _, Kend;2 q" y; Q6 |- J! ^) o& h

: q5 k% ^6 [9 V- I5 B6 k显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
# l6 m9 i9 J) o, v! n
+ c5 d7 O  u( X期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-6 04:08 , Processed in 0.016874 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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