设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4452|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:) M' |( w- x  n6 C& w5 B
kanal:= DDEConnect("Excel", "Cost");
9 t: A* q3 i& o( @: X0 qDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);; D! ~8 V9 d- S' J( c' o. f9 F& r
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
8 t3 J% S/ |# }* L4 |' s: z' |DDEDisconnect(kanal);- P: O/ g/ E! L# ]) a: k
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。/ ^" _3 s4 d. _* m$ v1 H. X) u0 N
  ~, n3 g; {' `# G$ Q! |
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
6 T% ]( u: L& L& G: h& U
5 P7 S( q2 ?- D# \( S0 v/ P: X* S6 R  Q# M# v4 E
木有人理我么?
: T8 N+ K$ ^( ~; p/ {& s
% [$ ~6 w$ X7 O* M* Z0 k我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
& B+ @% [% N& J$ k' G+ G6 T) z, S, r0 b4 x. i
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);; @8 w# y7 g" l9 u- J5 ]
% [* }, F% d6 t: I7 E8 D
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 8 L& {$ e% l! \0 H5 @/ h* c! ^
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
# l2 L0 @& n9 |# b$ X6 ?2 x, e# T0 X8 `4 N4 \
触发语句是这样写的execute("        'cost'   ...
+ I" z# e; f9 X( X5 Z% n
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 7 Q6 `. `* [& }  q! l
taoyifei2000 发表于 2012-3-29 21:37
8 N7 h7 C& ^2 p+ |7 f; i8 x. {+ P. wdde确实没用过,不过之前用过其它接口,不知道有没有共性。+ Z( K- b$ B: [7 u# {( b
5 Y  f" V5 G" t$ p
触发语句是这样写的execute("        'cost'   ...

7 `$ x) [! M7 z, f
2 ?4 K% n8 Q% q% D$ l& P不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
$ o0 a7 G: ~5 u. F5 J+ E( f+ h
- C( e3 K! d  L' v诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
- ^$ K! c" a, f$ J
若叶繁茂 发表于 2012-3-29 22:03
. s5 a8 q$ |; o: u; s4 A' [5 \不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

. o% @/ K/ n. G  m6 Z. }# s7 D- x  c1 c0 }
我也没用过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
! J/ D, }. U! B6 [* K我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
" y3 J5 W- H3 b. _
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
# Q& C, `4 j$ T/ T7 R4 R
  ?8 n8 i% k, T1 m6 k我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。/ f. L. X9 w2 Y* Q
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:, O) g$ z4 }0 `5 Y' S; u$ H4 ]
is+ J1 J- K/ o" O3 f6 J
        xl: any;( d* S& N6 q. K8 {& N. `
do) A; u' \9 o, t5 z$ U1 X
        if ActiveX.active then
* [! y/ q( j$ j6 _/ H2 ]                xl:= activex.application;. s& V% f* r  o( I
                xl.call ("Macro_Reset");
+ Z8 m$ H  M* U. _: j) y: @2 N                activex.active:= false;% x4 z& m9 E7 b. \5 l1 T3 l$ P) {
        end;# K! }% k) ]" v
        ' q6 K1 I, O! B. j) d
end;
- m" O" P3 Y2 a
$ t5 d& k, D: B显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~; J$ e- r9 p' Y/ Q  y- w
8 |8 v) J) L' W1 d- L6 M
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-14 18:15 , Processed in 0.019307 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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