设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5550|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:5 d. C) b7 @& C
kanal:= DDEConnect("Excel", "Cost");) t0 W6 p' N. l5 ^$ b' Y0 E$ A
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
& ^, W3 L7 h: Q5 ^* ?# f3 sDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);  w2 E! e2 Q4 J# ^3 {4 ^! b- f9 v
DDEDisconnect(kanal);
; z/ h& L' _. Q- k$ X系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。1 G: e& i( n2 ~: {, p8 ]& f1 J

- C: [: \; m/ k# j$ H5 h6 I请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
& `/ e+ D( {; G( R0 A" [9 F8 S  i6 Z; d- w0 Y& c9 M6 p1 E/ S
4 [; X' Z$ g- i
木有人理我么?8 g& W' p6 a# R# {

/ }2 B! u* j# ?& B我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
  p- [7 f& y; j9 p5 |7 g
* w8 ?7 h0 G! i! V+ ^/ g% E4 @: IDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
9 C0 R1 |9 M( D6 C
8 R* R; Y4 @7 l0 q" i+ @但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 2 w- f! S$ I. C  v! k% q9 \! a$ v
dde确实没用过,不过之前用过其它接口,不知道有没有共性。' C( ~7 \* ^' _" w
9 @6 J8 y! u  y
触发语句是这样写的execute("        'cost'   ...
/ d  |* E' o$ X0 ^: Q; e
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 8 X; p: q* s. x+ a
taoyifei2000 发表于 2012-3-29 21:37
2 {2 W$ i+ K) u' Ndde确实没用过,不过之前用过其它接口,不知道有没有共性。6 ^. q0 l$ \) D) A9 C4 ~! M9 A- A* f
9 _( C/ G$ X% c; P
触发语句是这样写的execute("        'cost'   ...

3 N  e# o0 K1 |' Y% w0 k/ @* b% O: i! @6 ]* e  K
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。' u+ S9 B  ^# L5 M2 G

4 w2 l5 D2 S3 E2 H7 R6 X# r诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 , V2 M4 D# ~* n4 n" n! H
若叶繁茂 发表于 2012-3-29 22:03
0 H1 u0 q& F. _1 f% w不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
7 i4 q2 ~6 ?& u% ?, q

, s: T! f2 u) z! p: K我也没用过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 1 x1 R2 D! h1 M- T9 I3 g* k
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

7 G( u5 y- F  U' s! K谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。( q- C5 {, J; W; ]1 N. _8 y' c
! p) ?, d. G# g3 H
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
# Q; G) R, F1 g8 j/ n7 f; O按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
% F) e* m; y% X5 Tis
- M9 p3 e1 o2 E3 T        xl: any;, |5 A  K* [8 n2 ~; ]; x
do
* }9 R. ]( z. f' A- v        if ActiveX.active then
. P& l/ e2 v( X9 @1 o! `                xl:= activex.application;
: X# I# m" u0 L( N% [                xl.call ("Macro_Reset");
' F+ D$ f' z6 b8 S                activex.active:= false;
, z+ S' ?; g' q0 u+ z        end;
/ }. V& t# H# v9 w" H       
0 i3 y9 y6 D. O1 W' ~3 eend;9 I' [$ H) o5 U0 h7 i- s  {

! P; Z$ l9 R& w) C. d7 k显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~% b* J. C& c! v' W  s: J
( [5 |" V. l% z
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 16:24 , Processed in 0.330745 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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