设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5379|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:/ g: H% Z# Z; S& q* N
kanal:= DDEConnect("Excel", "Cost");
9 G* y  M& F; h( j& {DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);& x2 B- F8 t9 F0 O6 s: H
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
, q' A: x. T! f* S+ x+ ?DDEDisconnect(kanal);
, z8 Z1 d; B9 ]7 s% ^2 P. U系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。2 q9 x" m; y- E

- E) A/ |$ j4 _' k. |6 U' n' D5 |: Y7 L请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
: v: m  g+ ]& b1 q
* k( w1 b% c5 U" l5 U- X% d& s$ x
# W  R9 P+ R7 C* _木有人理我么?
& X) d# Q; @% |) R/ C$ G3 f$ z  Z+ h- Y/ r: i' p: W
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
) H1 v! G8 Y/ i  U: W5 K: v
' w6 \9 u0 G4 ^  lDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);* S- i" b- b" {8 l
( @) m+ G, o* A) C7 i
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 2 f9 U! ]: `& k- y
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
! q! G2 }# g$ `) u- ?! ?: N
3 D3 J" Q$ H- l# G0 `2 @触发语句是这样写的execute("        'cost'   ...

% H: U& J& n% ?. Q谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
) `6 c' P9 j+ G/ N1 i9 t
taoyifei2000 发表于 2012-3-29 21:37
+ I8 F) j4 d$ P7 w/ udde确实没用过,不过之前用过其它接口,不知道有没有共性。5 e( V) ?2 A  ^3 ]
2 ?6 R, ]/ h/ R
触发语句是这样写的execute("        'cost'   ...
6 E) c$ m0 t& h( ]% H4 A6 `- M" `) t

1 L# Q& ~( x7 B) H* E, ^: o% z2 \不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。% b/ f6 R- ^1 E% C

/ q- d9 S, h7 A7 U& ]# k诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 0 L8 q+ w3 j* T" m/ c3 I) v4 N
若叶繁茂 发表于 2012-3-29 22:03
. Y3 X# O9 L0 A( ^) }4 \不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

! c5 ?! z  \4 l# a) f5 M0 S" X* r
7 p+ o1 {5 r5 [  R- O) O2 i我也没用过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
2 E; w8 d! x) [9 _我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
  K+ T+ K' m: s  Z# l' \) S
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。' A" i7 C" W6 {& r) m7 M
5 ]7 H" {7 u: ~4 g: r+ g, e
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
& O9 G' _, n8 _& ?4 f& R9 v按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
6 ?- O; F+ L, A" l( S3 a- S$ J2 Lis- R& e: q' e+ W# c# f/ J6 b
        xl: any;8 [! K' C* @' M/ z0 T
do
1 d" l8 O7 y- `: S) U3 J) k* a        if ActiveX.active then
$ _, k: |6 v+ B. n% ?                xl:= activex.application;& D% n/ N# H* C0 n+ _5 I
                xl.call ("Macro_Reset");
2 A8 t" |3 Z0 T5 v- r; t$ s                activex.active:= false;  r5 {) L( v9 k
        end;
  |2 \) m& f4 l  m+ x& K+ {       
8 k% t$ M$ O" Pend;
0 c- L7 ~' D% y7 K
; ]1 u4 c) H; b4 g1 N% h$ r8 w显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~! [, v* ]7 a) \$ c7 a2 G' s
0 f9 k9 E2 {: G# z% r% O
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 11:00 , Processed in 0.016916 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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