设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5416|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:4 s" a. q5 \1 m' B! |& s
kanal:= DDEConnect("Excel", "Cost");/ B+ r# F# O: F* G
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
% q4 R6 V* J# @" N' ]DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);  e1 g0 U! S1 d0 n- \8 Q5 `" }" z
DDEDisconnect(kanal);
/ d( z% T- x: B% p3 ~系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。; h6 `6 u2 a) k: ?6 g

  F" L- p1 P) h& ?' B$ |/ `" J请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
# i, o% U- g* h7 Z- P- @+ E% i! v+ v; x0 n/ p9 B( R

# M8 R7 M% K" r8 S( p" x4 Y木有人理我么?9 T! x1 N6 d) v' n  z

- ~7 q- R& p/ D0 T3 @$ l我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:- b7 n2 d# W& i3 B; W
; {1 g; e* \* k! C# M
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);% G9 U! E5 D8 q2 y
1 E/ E0 G% {2 G9 Z* i8 _# F
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
4 t/ b5 U4 @7 i$ [1 V% kdde确实没用过,不过之前用过其它接口,不知道有没有共性。
' T9 W: G# w# y% y- [  r6 L
2 B7 Y$ }8 |* m1 H# ?触发语句是这样写的execute("        'cost'   ...
8 Y! b$ r( N, e8 m9 `$ k
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
" j3 e4 z/ B- M# }. r8 j, g! {3 ~
taoyifei2000 发表于 2012-3-29 21:37
' Z9 a) p" z7 y6 t2 fdde确实没用过,不过之前用过其它接口,不知道有没有共性。
% ]2 f9 [7 P: v6 O$ [' ^
* H2 g! D8 p+ o' R触发语句是这样写的execute("        'cost'   ...
3 q; X0 e# \7 f6 G9 K# s
/ n- J' H# Y$ g9 x
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。1 J6 j6 E: f: p- a
4 ?; P1 `2 l' P1 z" C1 z3 w
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
. A4 E/ p1 O  G' |8 h, M: U8 ?- J
若叶繁茂 发表于 2012-3-29 22:03 0 O/ y: ^1 c% Z
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
" N  i8 q* Y* n, r% A
' W5 H0 ~2 ~. [1 k
我也没用过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
- e& g) M; ^8 D, ]  P- W6 _3 A# X我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
2 t. r  R9 ~% `9 A8 b5 t5 f- L5 u
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。( X. i1 W2 y) c$ x8 L; V
, r* g* k, X/ \8 U. h) }* J5 K
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。# U9 o5 |/ o. K7 r4 _4 x
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
$ U7 E& k9 ]& N: D, Ois
0 G4 _5 ]3 K4 g- L1 s6 \        xl: any;9 N6 m" w) ?1 g2 f5 r
do5 q8 u7 f: w# a% e- T- B* Z
        if ActiveX.active then
+ N; l3 @5 y0 \9 U, [5 o                xl:= activex.application;, r! X8 M" W* \4 W. o
                xl.call ("Macro_Reset");  k8 u* \/ ^6 p2 v: P2 z  w
                activex.active:= false;/ c1 ^/ f) A) G7 p; |& [( Z
        end;
9 e! _' V9 ^* o* t5 a& z$ L        4 ~1 t# p! g2 g3 l0 b2 D1 J
end;
/ B  L$ P. w  y# S9 J
! _& k. d  |% f# w& [显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~7 O/ o3 W& l* l: e/ C0 ?

) @0 U) V+ l6 O8 \期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-5-7 10:59 , Processed in 0.015649 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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