设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4618|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
" Z, H9 s; }) L* q/ lkanal:= DDEConnect("Excel", "Cost");
1 V- X+ [5 b! e5 c7 n  nDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
9 \; @% k% C$ D! M" F0 f4 @1 qDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
; r/ n7 x$ D+ Z3 A; SDDEDisconnect(kanal);$ I5 U, R, G( j. C: Q4 U3 {
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。7 Y+ d/ {& F6 v8 i. T; A
( W* I/ Y# ^* F
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
; L/ I; i+ N4 ?/ ]
8 }) Q; k$ b5 K% E
( ?; w8 E1 i7 O8 w" z" H木有人理我么?: r- N; U$ Z5 s- V( k. X, K
" R1 i: y  x: \1 j5 g
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
& k" |9 U9 M4 t4 s" i1 |0 z( `9 T- V% D- n8 Z: J
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
+ A- [+ |1 u' N+ |; w1 `' _% P; L- O# i* S
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 4 [: X" w3 k9 x9 b" k9 u1 o
dde确实没用过,不过之前用过其它接口,不知道有没有共性。5 c$ [' s- I$ R7 o) p5 ]# e) {
+ ]# f' }' r+ ^9 h, M  P
触发语句是这样写的execute("        'cost'   ...

1 i* g8 e& T+ Q3 P4 `谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 ; }  }1 A4 A: A* f
taoyifei2000 发表于 2012-3-29 21:37 5 N* L3 p% s% b7 [/ V. T9 C
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
7 U( u( o, s3 K2 H- D4 ], T% l4 W* R, e0 o
触发语句是这样写的execute("        'cost'   ...

; K8 m. N# r4 n7 e/ Q2 q- |$ G2 H; |. O* H- M$ W( y% D
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。' p$ f' ~5 c' R4 |# n7 z
( H$ T+ q$ E0 o4 X# M5 X2 e
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 $ p9 i' {' w- Z1 H% |$ R4 D
若叶繁茂 发表于 2012-3-29 22:03 , W8 J/ l+ ~6 d2 Y
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
+ g( E: m& Q; B( _. |
- O" _  \$ M. |9 v/ W
我也没用过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 5 _1 p5 g* K5 _/ [
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

' R& q2 _9 k- p2 e, J6 y! K! x' k谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
% ~; T- W2 M+ q, F
& U. j9 V) W+ ]% P8 B4 p, y# H我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
6 X$ P" Y: a1 C2 A% D$ |4 Q* P$ b3 r  N按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:4 L" D; X$ j- v9 r! i
is8 d. W1 c3 N3 [4 ~! A7 n4 j
        xl: any;
6 v( H( {( {2 v* _4 k9 P& }do" a$ m& Y6 y  Z, r1 Q
        if ActiveX.active then  M0 L" l, ?$ y* ~* n
                xl:= activex.application;) U3 [5 t5 m- o; @. L% h7 w6 w2 K
                xl.call ("Macro_Reset");
) d/ u1 z* r7 F: O* B                activex.active:= false;7 {2 C6 H1 ^8 H7 M( t+ f4 m
        end;
2 {6 y9 m# Y- p, f       
2 u, V( U! k9 }! cend;3 P. W( f! J7 E7 m

3 S5 o" d1 @# A( m# p4 [显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~0 Z8 F3 r% E% F0 h  y3 S4 G1 c
5 n2 z* c3 b1 d$ B% t+ q: d8 T
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-17 09:48 , Processed in 0.014382 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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