设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5553|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:2 t; T: h) u6 S7 n
kanal:= DDEConnect("Excel", "Cost");. \8 U' F/ g! ]) R) [) Z
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
3 ~, e+ Z) ^! w9 }  ?) c, D" mDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);+ _4 X# t: J8 D4 e
DDEDisconnect(kanal);
" X7 h* T0 d2 t9 d系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。7 q1 x7 y6 C: e" U
& r6 q" d/ u: }) ~
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
* P, o& K/ J. r' `3 T: S
5 ?- v7 W- r! T* ^. z( W, n  E1 R5 X* i4 t; c! r
木有人理我么?
, \7 K. x5 V. F3 G2 N/ l, }" Y
* m! G/ h' i& ^6 F: H1 V, j! _我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
" ~1 d; j6 @$ c+ @* g+ q$ X" J: l% a! w
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
, j1 b5 v2 h# w5 z' p9 x( R
; h  f  ?8 o# g  H2 M$ E5 T但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 7 ^$ s0 d; f9 i/ W
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
1 K. s+ Y" ^' z' T% F! n
# j* ~$ X" l9 g& v触发语句是这样写的execute("        'cost'   ...
0 O6 K/ a+ B; x1 j
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 + Z% B  A+ a! _1 F; e  X
taoyifei2000 发表于 2012-3-29 21:37
. S& Z  t& F2 q4 j. ldde确实没用过,不过之前用过其它接口,不知道有没有共性。
% c0 ^* D* D) x/ m- @4 n: w# V+ G1 u
( b7 r' g3 ?( S. S; j- A触发语句是这样写的execute("        'cost'   ...
0 B0 m* B( ~- m9 X1 b* u
+ G& n: B' n/ I5 o+ T- p! F
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。  v1 H$ n7 d) y# {$ \+ G

1 i# ~3 V/ a( P/ q( L诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
5 K0 X% g  V- s! ]" P
若叶繁茂 发表于 2012-3-29 22:03
- R7 W* Y$ v' J# c0 \2 Q不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

+ I3 z7 H& e( F8 J  Y$ u
8 ^: O) g9 @0 |我也没用过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 7 G+ ?$ n! |' u4 Y+ y, n
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

+ _0 X- t* s& j$ m. |) m谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。; t4 M; t& Y3 y* T6 g
% I& |1 I' G$ B% `4 i/ }
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
" [' X' ~6 r9 w1 b2 L; @按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:- d0 h6 d6 y+ t) R- R
is8 |) v0 x" R3 j. H) i: }
        xl: any;
  R# Q' j& \% J  Qdo
& Y1 _7 |: u! V        if ActiveX.active then  h2 n9 e! H4 b, X/ B
                xl:= activex.application;
6 ?5 V6 q* g* K) p' j2 O* C5 \                xl.call ("Macro_Reset");9 C( b) A1 E, W) U
                activex.active:= false;
5 o+ H  c$ K2 N) t        end;) I, A/ l, V% C5 f
        7 R; G: W( `; Z* p! w1 h* h
end;4 S" }3 a* S, |) e

6 B2 t' R) X7 o4 W显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
8 ?6 e9 ^' q6 ]* a  S
% s9 O, K" g4 T8 h# E: U* p期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 17:39 , Processed in 0.014825 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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