设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4357|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
: F! h6 d( c' g: p) B0 s- Zkanal:= DDEConnect("Excel", "Cost");
3 X7 n0 n- d0 i$ |( I& E- R) ADDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);; F. ~( G/ M; b5 C# W! |6 I8 p
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);# q9 a8 F+ {. U9 ~' b/ r* n6 k
DDEDisconnect(kanal);4 Z  [6 N4 D: w& T- |! O8 G
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
$ g. z0 U" T. k8 I% J
, e+ F9 F' J' p4 G: ~& P请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
( `3 U) M) W( d* d2 m7 |9 v1 D! N" l7 m8 |8 R

: }6 B9 q. u9 d; i3 F木有人理我么?
; a* G6 q6 N! }2 \( i( b, ?& @0 f( D) @5 i4 t
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:  Z1 K( Y$ @" K! W# z
# r: y) i. T% n* r3 V: ?
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
" {8 ^( U, \4 T+ I! N1 N% A* Q1 }8 R% M1 ]* v) Y3 B
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
& d4 Z6 g$ F% o$ S6 Ydde确实没用过,不过之前用过其它接口,不知道有没有共性。
" E( V& \$ U3 j( f+ s' x" c, g% x8 k2 B7 G% X  Q& q) h: x- R
触发语句是这样写的execute("        'cost'   ...

, X- d* x4 b/ }谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
% f- H2 h6 u9 o1 q! u% e) F  h
taoyifei2000 发表于 2012-3-29 21:37 % G/ C5 s' r( i
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
3 B2 s( g8 g% m* F" t) k. n: A( x0 u) y& q! ^* m6 k8 [* v$ j7 f
触发语句是这样写的execute("        'cost'   ...

, k, [1 z1 O" ~3 Q$ m& {! x1 U7 ?5 L+ N! ~9 y6 _
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
4 R# E  ^+ `8 Y5 e4 K
0 _/ M* X& Z1 L' [- C诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
* U* r+ s; q. ^# Y4 D" ]- l0 f
若叶繁茂 发表于 2012-3-29 22:03
) c  e# |! [/ N0 d% g4 c不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

. N0 M5 `% W/ k  E6 E/ C% ^6 D1 ?- H6 D; D. U8 B  g, G
我也没用过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 8 j$ d5 j+ R; ~. `1 K/ T
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
  H! R3 y1 g" T+ G2 n8 f3 A
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。) G* w& a1 ^: }2 j/ v
' _& f  w/ B) A, F2 Z5 k5 T
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
) _/ d8 [- e$ p1 R$ V按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
0 H- `# K* }. ^( m: bis% t3 k0 C8 |& M' `( j
        xl: any;
$ |5 R8 P- Q% p3 P2 w7 L0 v! b  Ndo5 [% S$ e& K6 A7 [
        if ActiveX.active then
2 g  [# E* y( I2 F6 O) b/ Q                xl:= activex.application;
6 w' A! H& z: K8 p' S) G4 i/ w: P& d                xl.call ("Macro_Reset");
& W. D9 a  h& m1 F/ b0 ?) ]                activex.active:= false;
1 {  L% V5 g  \* l# Z0 J: t6 S        end;
" }! D# k# ?. b& Y/ N       
5 ~+ j9 \/ t4 u; fend;& @& w( W+ ~* \2 m% K

3 z) M1 p! w+ c- O1 }显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
- O7 c: |, k. W; ~, h3 Y# T. K) y9 H. s9 P
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-29 03:54 , Processed in 0.014486 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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