设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4310|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:6 k. x) N2 |% U
kanal:= DDEConnect("Excel", "Cost");
: t8 @- @- B  R$ hDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);4 g* A5 ?6 c: a& n) _
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);3 h8 r9 t# n1 [9 l2 C. `% }
DDEDisconnect(kanal);' d" _2 C/ ^1 D" N
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
2 ?: _1 t7 n0 C* y% F9 ?4 A8 E5 P- A0 L, V- o
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 $ u1 X! [. M' L0 ^2 `8 Q
  G/ U+ }# J  r# E6 c) W, [& U

: g; g% k( r( k! X! z  r木有人理我么?# \5 `% B; z8 i5 X) X3 m* |. B' v0 x: ]

1 V3 i, U7 u4 i; v' U8 R我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
$ R, D) B. B$ w  \: H4 [' O2 [* F. J3 i4 e' N7 Z& n. I4 n8 U& J
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);! J0 A6 X3 c9 _! `6 t5 X

' u5 v. N$ V% h+ p; Y0 _: y但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 0 g" C3 q+ _  S0 O
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
/ P3 K7 W7 D9 F- Q5 A7 t8 m7 @5 ?4 X
触发语句是这样写的execute("        'cost'   ...
- I$ ^' E) H" s+ ]% s
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 ' V: g, H, ^. s7 s( r9 i
taoyifei2000 发表于 2012-3-29 21:37
* a8 v, ^( O5 h' ^, qdde确实没用过,不过之前用过其它接口,不知道有没有共性。% M9 E4 w  F3 W% R
4 j+ g6 l9 k" W  [
触发语句是这样写的execute("        'cost'   ...
0 ]6 r* {$ ^! g3 \9 C! L* g9 x
+ I! p+ q9 l/ X& i, Q  J" O
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。% G7 Y1 v9 Y" T, m) d- r( }, |
4 q; }: L4 D( D2 \
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
9 K: r9 w, G, `; o+ p
若叶繁茂 发表于 2012-3-29 22:03 - u7 u* E- I. v7 \. V- X9 x5 j
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

. K% I- Z; n$ i5 a* ~
* f6 t6 ?* l5 E1 |我也没用过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 ; t% Y8 J7 N' a4 ]1 s
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

+ c7 ?* b$ {# n6 Q4 P0 x3 Y* B6 y谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
' e2 I% [7 {3 }/ e  Z8 P4 D( X. J- t8 n
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。* s/ f: m* o2 V8 Q% s
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
: z9 R2 z0 k9 _is
; d: p) J/ o$ ]        xl: any;
+ S8 s, d4 z3 ~( @( Z- g3 j# Edo
$ Y8 r0 r) j. K' z! T$ G' |        if ActiveX.active then
: |8 V& ~5 i0 ?, y                xl:= activex.application;0 E: R4 s. V/ z* |! i: I
                xl.call ("Macro_Reset");
: m2 _+ Q4 n& g                activex.active:= false;
# k# F; z: M- I1 [        end;
( I3 u* g' m) y4 a9 o6 P" x% J       
+ y$ Q2 g3 _1 Z( cend;
8 a# v+ a, D- t+ V. g
$ R& D; D, J8 w$ Y显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~8 b+ d1 e$ T4 x

2 q1 |# N3 _2 r" f* ]% C+ ?7 |期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-22 02:08 , Processed in 0.014225 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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