设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4172|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
) Q/ P+ W: w/ c& u8 b3 Bkanal:= DDEConnect("Excel", "Cost");
3 ^6 c! e9 K, G% j9 MDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);4 A$ t! t* t# e, _( {; j, `8 S
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
9 v& }- o4 r, B# c4 C7 @4 u8 N6 kDDEDisconnect(kanal);+ c7 |$ J/ G% h! Y
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
4 a! e, U# r& p: O( h1 M4 t4 v9 E; F: v, {" }4 A( A
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 ( U* Y7 N; }7 ^1 t' t
, }! c5 }1 f9 n9 b& n  _
# n6 ?. m1 U: \9 ^! r
木有人理我么?
, P, s& D# V! l$ b) V" p4 ?- J. w9 m9 d1 f- V. C1 _9 Y( |
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:9 @' r  x3 b" b# d
5 P( I" l6 X" C3 L/ Q
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);/ R$ ^6 K! i% N, r
7 Y% c+ j7 }" k- V2 z% }
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
; i" u6 u* e: q" Edde确实没用过,不过之前用过其它接口,不知道有没有共性。
+ l6 V9 G& H/ D" R& y$ r
+ F3 m. G% C0 P1 S( L% d触发语句是这样写的execute("        'cost'   ...

7 `( }+ W7 H! G6 h; _5 L谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
5 X* e0 q9 u' Z& x' q% M5 J
taoyifei2000 发表于 2012-3-29 21:37 : L, O4 \: I4 e  C
dde确实没用过,不过之前用过其它接口,不知道有没有共性。/ E1 ]( s4 j' K" q/ Z( A

7 J% T2 \5 ^: E2 q触发语句是这样写的execute("        'cost'   ...

% L# F8 ]% o5 o' V7 c% D7 V, ]5 l0 |3 M/ k) V. t$ E
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。3 s0 R2 P2 K  d( R0 A& S# G
" E0 e& v, E$ w% E3 o& O3 i. ?
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
: h7 x. W. a- u, r( {+ D
若叶繁茂 发表于 2012-3-29 22:03 & t$ S& A' g! `$ k% V; x9 X
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
! i* `7 Q6 Y& k/ y3 F" K
' [  F" i# Q# z6 j  s8 k6 c3 m' p
我也没用过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 - O' t+ o4 ?' w4 B7 M$ M5 P
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
* _2 U2 ^% B, F5 {' J5 Z
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
" b) d2 m2 Y; A7 a& J( W5 q. Y$ Z' [7 d7 E" c/ \
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
9 Q# g0 f: F. G按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:6 O6 S; T, r8 D& ?3 h
is
+ D( C  c% e4 z6 w, H        xl: any;$ Y2 ^# q4 Y( T/ o
do
, K# [0 b, l- p7 _+ v# x1 U        if ActiveX.active then
# o9 p) x  T5 D' Q0 I                xl:= activex.application;
3 E$ [& T- k0 k& D3 {  Y* j                xl.call ("Macro_Reset");* N. ^  Q2 _2 \+ Q! `
                activex.active:= false;+ M: U+ I0 K5 [4 P! @3 X" h  l8 z
        end;: E8 u; `4 g7 Q; _! h6 t
        * }0 `$ z! g6 k8 e) r# E
end;
) P$ F# r' z+ E
4 u2 H* Z+ w8 T# a  o9 K' d4 V9 M显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
8 Y! W" _, @* v2 p/ L* D& d6 U9 R. S: t/ C& z# ~6 `" t5 C8 H8 u+ T
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-6 22:24 , Processed in 0.022909 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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