设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5552|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:7 s) {9 l1 C( d' o. V7 R, y  J
kanal:= DDEConnect("Excel", "Cost");
2 I2 l+ d/ c: v& C! H& I9 HDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);; w5 |4 [" F5 d) ]1 i6 F
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);5 G7 r: @8 `, W/ F6 F8 O% T3 {3 [
DDEDisconnect(kanal);
3 g8 W" \0 y( m/ q# o+ X( u7 B系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
8 a; N/ o: Y! ~) }! v* u3 Z
  \0 ~+ f: \+ K, K1 x/ O1 U请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 " |. T  B! S8 [9 Y
, x% [6 r- b% m
' a, b: m7 W0 \; @+ Y+ l' A- F
木有人理我么?
5 u5 i( K& j9 a' |4 y
( W) ~+ N" A' v8 r1 `- F我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
8 f7 i: h1 F; U+ P! R$ M9 N) Y' T" E
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
; t( r* F3 |( [$ K: \: ^  s4 d1 x6 B. I  o
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ) i+ Y3 z8 T# l8 N1 A% t3 m2 t
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
4 R- }+ V2 y( k: T/ s" K& o
* A- z; k3 a" o5 T9 f( h/ Z) n) s触发语句是这样写的execute("        'cost'   ...

, W2 ]4 Q# s/ T  H( p谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 . F1 ?3 W: ^8 `2 Y/ D# }5 O% K6 N
taoyifei2000 发表于 2012-3-29 21:37 8 z6 ^8 j( p4 Y$ N. U; y
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
3 u/ f# }% Z3 i) }- w
: G6 Y! Y1 E; i% z: J  k5 J3 z触发语句是这样写的execute("        'cost'   ...
6 Z9 I3 N/ L8 J% v

8 M2 w- ^4 {) c1 X% z! U, a不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
7 Q  U3 T' q$ s! k
* s( k8 U$ I* q诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 1 \' J, e7 C7 a% s  J. l
若叶繁茂 发表于 2012-3-29 22:03
8 x& B0 C- F% b4 v* `不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

7 F8 x& V4 f/ B. y* F& ?+ m7 S
/ @  t. ?0 |) M  F我也没用过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
( C" g. \1 Y# G: n3 W9 p我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

8 M6 W- q5 W& `; _, d- g谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
  t- \7 |. w2 Y$ I' u  F' y& Z
) R/ V7 M6 ]. b. F1 i- z我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
% y6 Q% f. p2 D! m! V  @按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:) p5 T) x1 \1 e3 f
is
! B- a  T1 R4 {) M7 k! o8 `        xl: any;
+ Q* }; m7 Z2 C; H* ~: Edo, ]; D" R* L/ k) [8 g
        if ActiveX.active then) q  R  Y! f7 ~8 X
                xl:= activex.application;
" S0 }& y6 \- |/ i  Y                xl.call ("Macro_Reset");: n# N2 e* o; e; E% t3 x" s3 Z3 ~
                activex.active:= false;& n. o/ S7 S& I1 _! T
        end;
/ Z5 o; x  c2 R; o# e' c        7 G( F4 B' f* l+ a# r* b  I
end;
. T2 p4 S" e9 W1 I6 i8 D, @
9 k( R  }1 G/ U. v, L) M显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~8 x" o) m, ^5 A% ~
9 K$ Q  G9 ?- A( V1 i( z
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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