设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5645|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:( b: R( w# F% V  A
kanal:= DDEConnect("Excel", "Cost");$ {% G# [# A! D* R' M
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);6 \+ i( D9 e% k3 b% K
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);1 P4 v; h" ?% j) _$ B, U
DDEDisconnect(kanal);9 p$ W+ d  b7 G& `
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。& O0 S* ^4 E! Y$ N! U) a  X. Q2 @1 D

* Y, k& F% B$ {. K$ s请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑   E' b6 l" T8 k/ g2 o4 X  O9 D4 h
5 T6 r3 X# g7 F, ]0 ^2 {
! t6 O% s. A( H! L! B
木有人理我么?/ {) _- M6 }4 A2 }( N+ f' Q
8 v% o8 |+ k) a
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:9 a+ u$ F: t! Z8 y2 v- P

1 T; o: e& t8 M! lDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);3 E, D$ b2 s! I7 ?# A1 o/ E/ u3 P

% X8 H! w, W$ L' ]# h6 j但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 # l8 A' w, y4 K- N/ H# A% u
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
. h! D9 B! u+ t$ E4 o. @1 Y8 r6 \
触发语句是这样写的execute("        'cost'   ...
% V' Z/ r' Q7 T( Y+ m
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
  G" a) [0 ^  S( T' V
taoyifei2000 发表于 2012-3-29 21:37 ! x9 C/ m( Z3 x5 s$ l) n) h: s
dde确实没用过,不过之前用过其它接口,不知道有没有共性。9 N$ N+ x6 l4 W* I5 w/ t

4 K6 B$ ~) [9 d8 |+ O触发语句是这样写的execute("        'cost'   ...

- ]; x3 p9 d5 z# h
+ Y+ d; J6 N& ?1 p+ U+ X不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。9 y. @  r, Q; K
. K5 T+ l" k; N! D" g4 p
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
) `3 n/ ^$ N  ~% ^9 |
若叶繁茂 发表于 2012-3-29 22:03
8 Q2 q2 ^, O, Z: v: k6 T不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
# M, ~& C+ E7 G, P* d5 [

1 |) j7 U$ [$ ~5 m7 G4 @+ {我也没用过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 2 s4 m; J! h7 ]- q2 c
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
9 ?& z& J3 v+ q# F: Z
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。. F3 k+ n! {* ~8 t- M

" C1 Y) w7 z4 |" s! ^, n我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。) g/ N& H( l  Z: g. L" ]. I
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
$ o# ]  ]6 O$ D- q+ \5 t  m8 vis
0 k9 J6 [' P) f2 ?' h        xl: any;
9 N  ?% |2 i+ s6 Rdo
) y7 x. q9 i0 a6 A: C% f1 V        if ActiveX.active then) t+ m" Q* F- V& p7 g" h
                xl:= activex.application;3 X5 l/ m* t) W* n, a
                xl.call ("Macro_Reset");
- V" d9 H$ K8 R  D% L                activex.active:= false;  F, z3 g; j3 Z: k2 m
        end;- ^# J9 ^3 }9 w
        9 P: ?" v1 x6 g8 E; ?4 r3 ^) }
end;! y$ G' z" }+ Q4 O" ]5 Z8 U9 x/ O
. d6 r0 u# Y7 I3 W1 R: l/ A
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~7 q% }- Q8 r5 [% \2 u' B4 F. A

+ t9 K" U9 s; h' M" [6 x期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-5 22:05 , Processed in 0.013442 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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