设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5162|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
2 l# B, d* ~2 E$ kkanal:= DDEConnect("Excel", "Cost");
* {  m+ }/ B% y/ W) k7 }1 jDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
# `" j: b$ e8 |1 o$ a' Y9 N" ^DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);. ?6 H' r5 O5 P5 Q' @
DDEDisconnect(kanal);( N9 N! E" m; E. P  O8 ^
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
/ j7 j8 F/ O, \2 o( L/ I
; R/ e# I5 U: O* x; J/ T1 j请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
4 N6 Q7 Q4 A" J9 j4 G, Y* ~; G4 ~' M: w) ?; \

6 n, i$ _: \- h6 S( C. h& h2 T3 N木有人理我么?( g: I! k  z3 r7 F8 S8 s0 R

( |( w% z  L; n我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:, @  X+ Q( i! L4 F; O
% i- b% e, ^' |* X& |* u
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
" Z* a$ ?; g' l4 R+ f6 |9 L1 n+ }* w0 B/ {- T' T  u
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
' q! I8 |$ C, a: _( b: {6 ~& Fdde确实没用过,不过之前用过其它接口,不知道有没有共性。' U  o  w1 s8 x6 S# f  B

$ l. K( z/ ^% L; B触发语句是这样写的execute("        'cost'   ...

6 ^* @; _- m2 [, N6 h2 \谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
! t- _/ s  ]2 O/ ?8 ]7 A  _6 |
taoyifei2000 发表于 2012-3-29 21:37 5 b, }) l1 `% N* p8 y  y
dde确实没用过,不过之前用过其它接口,不知道有没有共性。; `: |9 T; X2 ]6 _  n# t4 U1 \
' L$ x$ R" q1 d  y; Q
触发语句是这样写的execute("        'cost'   ...
7 Q! F" f2 X5 C
: {; V& O. W! c% B4 i# B$ H1 J
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。5 l0 D; B2 B* v' |4 M' Z/ H

7 u4 j$ p" w5 N7 s% J3 _( z6 e/ A诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 & U( n! h: a/ _
若叶繁茂 发表于 2012-3-29 22:03 - y& o# g, |/ G; M! r$ q. |' m
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

1 v5 ~% v+ ]: |& C; ^
* X+ M; n. b3 E# o7 Q- N" m我也没用过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
- x* @, o' |) z; m! W. h: e我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

" J& T/ y% ?+ x0 T9 i谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
* k2 P; u5 _% D- K* ?% Y" s. K9 v5 c+ C! s* w
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。+ F6 V3 {+ o- B7 d" j1 l
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:8 ~( |  v9 d7 P1 v* [! H' i
is
0 B2 s1 [0 s, M- @: u5 f        xl: any;
) c# L5 \# L5 [! I. Jdo
6 v1 G  I$ t( ^6 x        if ActiveX.active then
, I- U  R  p- a/ f! }                xl:= activex.application;$ o; F* _3 A% s) s2 Q
                xl.call ("Macro_Reset");
5 i, Q7 Q7 E3 _" M! L$ H( n                activex.active:= false;
4 }0 O5 L$ g; f  q* C. C/ X0 a( O        end;( C- X5 c1 q( s0 F% v" I# U
        $ ], H0 L% R* I5 R- ]
end;
; b. w6 Y# p- `$ f
/ s4 H* ?7 k, F! g1 [显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~! ~0 C% N" D' t& g; d, c. c. ^# E
6 Q7 ?& \3 B! Y
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-2-21 13:52 , Processed in 0.014965 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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