设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5551|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:2 @; G# j3 h6 B
kanal:= DDEConnect("Excel", "Cost");
& Y5 K! ]1 l! k+ QDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);0 ~0 S4 e3 N3 b7 K, h) E
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
& w+ C9 T$ J/ Q- jDDEDisconnect(kanal);4 Q/ N4 Z- Z9 V/ M2 z; f, s" h
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
$ w5 @( o3 L1 ?8 b: R9 h8 ~5 \( b, J5 e# J! n5 I/ J9 |
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
/ Y+ G' M% u  z+ ]; ~( t5 F3 l3 I; r4 Q7 s& P
% o8 b8 ?& H! @
木有人理我么?
) _/ r0 I0 k' F! x4 v+ E. e' i0 P& Q  |. o8 l3 n# e
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:/ i5 t4 d3 p1 u3 S& s
6 I; `+ e. b) ^! T* C' C  j
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);+ u. V" d, n: ]+ A9 S7 u

! t; o0 Z$ z! {! R4 J' y" [0 s但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
* q1 S$ D+ H( y5 [; q: |) qdde确实没用过,不过之前用过其它接口,不知道有没有共性。; g$ \  h& V' `( n" G7 A
- V, K7 ~1 S% j5 R( h5 n, O
触发语句是这样写的execute("        'cost'   ...
, {1 K% f5 y1 ]( X
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
* Z1 d+ I. [# o$ x
taoyifei2000 发表于 2012-3-29 21:37 7 p7 Q* z( S9 X3 m
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
4 |2 P0 }# i6 k: }/ s
2 {& [: a% a$ N# J$ e触发语句是这样写的execute("        'cost'   ...

5 r; W7 n. i0 w
. ]8 `7 `/ [' n3 `5 f% m2 B/ T( O不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。3 h" j* G1 g! v# w% S+ h$ v

& Z! Q* j4 V: ^) h7 b诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
: B7 t; Q6 \& y7 M$ P0 j" A
若叶繁茂 发表于 2012-3-29 22:03
# [7 a8 ^" t: H9 l) `7 Y不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
/ P  e: z$ P3 X, u

* b* b" s. V( A# y0 n; c$ O. S. L我也没用过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 ! A1 {' U' e) v9 c1 W
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
4 ?4 w+ t0 N1 X' u2 m' i
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
5 P" [! `: e* u, ]' {; }
0 j  L$ T. U$ H) [: X0 I我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。! z  x3 j7 F% f, q! b. X- p0 U
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
7 z2 T: F0 m& d1 \( pis
8 e4 [6 a8 U5 A        xl: any;
  G% ]1 S- B4 y  X  j% u1 Ydo; |( Z6 i# X2 ^( U" u1 m: Y
        if ActiveX.active then
7 v, c& \6 S9 M  K                xl:= activex.application;
% x3 {' v$ @. _* ^                xl.call ("Macro_Reset");2 D% }7 L2 W( v) d  H
                activex.active:= false;
, E1 u7 s  q8 N! y        end;
7 D3 i3 z" ]9 |' [) [        ! u4 s$ N" w  a" M. t& c
end;
  l# L  A' X5 [
! f& S- G  z: `6 w  ?显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~2 v/ b% y% |( w

3 q5 h: D2 U$ P期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 16:26 , Processed in 0.014500 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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