设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5557|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
" o$ b! ~4 B  |% Ikanal:= DDEConnect("Excel", "Cost");. C& K% c' {4 i5 q% L: n
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);3 I8 t: G! l1 V' V! F
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);' R4 u! v3 H3 Z" ]
DDEDisconnect(kanal);
9 X2 }$ [  L) ~5 v+ ~+ Q, b1 B系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。/ y2 T6 F9 ~  S; I& l8 i" Z) e
1 X+ N  N% ~6 Y" G# S7 b% G
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
; T" I( k' y& t: K+ u; b2 ^7 M9 w6 s- V) @" J4 f$ {
+ `% C+ l+ T6 W( `, ]( T9 F
木有人理我么?
2 |. Z! N3 Q: z& @0 ]7 `
3 W' S0 o' ~) Y5 D! o我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:" Q1 i9 t0 J. I4 r( i, a" Z' w

) x$ g, F) Y9 R1 r1 G: K$ ?! `9 gDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);: ]& }) S( a/ j+ |
1 c/ L) O7 T3 n4 Z. Y, P
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
& n3 n# e- F& ~2 q" gdde确实没用过,不过之前用过其它接口,不知道有没有共性。
# R" H) u# X# }" y- q5 O1 E" F* V
$ w2 \  g' I% I; V+ s5 a触发语句是这样写的execute("        'cost'   ...
3 l& H: S0 Z6 Y/ {) D1 |/ }
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
2 _; r- c$ l' t# b5 o0 l
taoyifei2000 发表于 2012-3-29 21:37
$ d" T# K/ y7 ?6 jdde确实没用过,不过之前用过其它接口,不知道有没有共性。9 L, V& o9 R9 C: L4 O. Z% m% N7 r2 l

# I8 m) S8 s! u, H$ m( J( b触发语句是这样写的execute("        'cost'   ...

( V9 }; c! e% v5 S8 u% a" ]. E& [9 p8 p6 Y
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
8 d; Q7 {; R  Q& D* N! q- Z# Z8 Y7 I) {( E7 Q, g- E1 h
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 8 D* d) F5 d0 i% W% D
若叶繁茂 发表于 2012-3-29 22:03 ; ^! o7 V8 ^6 R
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

6 \; H' J3 s% m5 V# S1 F+ T' e1 j+ V. i& L/ y6 X+ J- Q" b* C
我也没用过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
" T5 B) Q2 l) O$ U8 M2 k  E我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

4 `* o" l% ?) L谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
2 t+ h8 {! E7 D) R- M6 L9 X0 C* e; g6 c% y$ U5 v" b: |
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
$ m9 q+ g3 E3 J% \$ R+ x& w按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
% j' Q  D9 f* F% q- R# {) u+ |& ~  a' d: Zis8 }. B: [/ A8 x. _' H: N/ K) h
        xl: any;
( j" @$ L: T6 a. Wdo
% e1 f3 Z; o& y( A# d5 h: i        if ActiveX.active then  b6 ~6 D- g9 u( U
                xl:= activex.application;& c: W: C# p  u' c: {
                xl.call ("Macro_Reset");' {9 \1 Q- x0 R  G
                activex.active:= false;
$ h$ Q" b$ M+ O8 q4 E5 Y        end;
- S3 ^- w& I9 \2 p# Z        & h3 Z& s( I4 P& D/ C$ _9 X& b5 E
end;
5 {2 x! E" [+ R5 S: j8 n4 L$ W5 H
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
, X. a+ U8 V. n3 q/ D/ [. x/ b  F* A2 O
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 18:59 , Processed in 0.014791 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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