设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5493|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
% X* S5 l: v* b( x6 u3 w- A9 I8 T8 K  jkanal:= DDEConnect("Excel", "Cost");3 ?8 P6 I9 u: ~' j, f: T
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
% I: b  `) s2 h: A8 eDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);3 C; H( @  r3 t" H$ _% z' j" a; Q
DDEDisconnect(kanal);, {0 r! q& B- A* P. n) h- K
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
- |( z+ M- Z) Y% K3 _
: p% X2 V/ b; i- l$ V9 H请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
. i6 l: [3 d( D  H( Y$ P5 F2 {5 t$ G- [0 X' y& [; C
( L4 {4 p/ i3 O; X" Y; R- N& A) E
木有人理我么?. L6 q) {, c5 J* C9 m" d5 B

- e. o" W0 `$ W$ G我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:6 S1 @7 B4 k; S" ~

  E) l% m  V: I9 \5 nDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);, [, p8 `5 X% o! L( |4 g5 d: H7 u
3 i& h  T8 C) q& i+ \( |# h: S
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ( h9 V6 k" P' K" Z
dde确实没用过,不过之前用过其它接口,不知道有没有共性。$ c# l2 ?0 J% o  o) _
! K+ P7 G: d. T$ T, {9 F
触发语句是这样写的execute("        'cost'   ...

9 K$ b. p9 U: e; U8 ?谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
4 v- k3 T) B/ Q7 w; C# k
taoyifei2000 发表于 2012-3-29 21:37
  d- s. ^5 j. j0 V  jdde确实没用过,不过之前用过其它接口,不知道有没有共性。
; H" d8 c9 c+ R( E5 [8 i/ p5 ]/ `" V! V% ~  j
触发语句是这样写的execute("        'cost'   ...

' d! @, _  k  o
8 ]1 }1 D$ J- b不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。: K$ z6 z4 k& c
- l; C6 j2 Z6 i5 x4 H5 P) y* T  M( ~+ _
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 ' U, T, J4 O! @- F" [( Y% f# A" G
若叶繁茂 发表于 2012-3-29 22:03 + n; l$ \* [9 e, j
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

2 x" @* Q( d. V3 m/ N5 e- @( V  \! T4 N- Q* w$ G% P# {
我也没用过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 f, s# G2 G. g5 Y我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

+ h; J+ ]2 S2 z2 [谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。# c# U( t: ^5 z6 ~
5 f! @0 l& Y# M- I. x; i  N
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。4 I9 G+ O+ y5 T7 s/ v6 G! B
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:; ?7 W! x5 \! A
is
7 z' Y: B" Z  I        xl: any;
7 f# u+ X/ m; I8 ]! y% N7 fdo9 K% @( Q* ]+ i! K7 q7 I
        if ActiveX.active then$ Z6 H' a. P* Z7 M
                xl:= activex.application;
$ `; {& ]0 {* ~  P1 G6 G/ }% n+ ^                xl.call ("Macro_Reset");4 }) P. i" \9 L/ v4 s% u5 v
                activex.active:= false;* ]2 Z) g7 S* z
        end;
6 |3 ]6 ?( J) ]* \# {, f1 a       
+ K; M7 T; x2 Fend;! u6 V1 z# h3 Y, U# m# @' o' V
1 i0 I1 L' r( u! u! O
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
" Y% [; {! ~- x  T+ ?1 t: H) ~
  O; z% z8 ?6 {期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-14 21:39 , Processed in 0.013556 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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