设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3634|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
  M3 z- P% Y* n/ J. ikanal:= DDEConnect("Excel", "Cost");
$ d3 r& p5 x7 l6 R6 t. QDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);* P' T# m# ^0 h/ [9 B6 W
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);: L7 z' {4 S# G* d9 q; ]
DDEDisconnect(kanal);7 q$ }1 y1 D4 r$ O3 |; f
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。$ W- [! y" e9 R( @, A& P8 Y. Z
& l5 S* m. u7 R
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
0 y* ~2 i3 t6 k4 m  G; N) ^
& c" g, K: X: B' ^5 q* e. Q$ N# J$ A
木有人理我么?
$ u2 ]( L8 U6 \, y8 I( D- Z( u
2 G9 i& {& w5 A0 ~2 v( }我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
( c/ l1 q8 X; L2 y4 U+ I* j0 g! Z# r- X: A; r
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
  O0 k% h5 y* Y: O" `) q% d
* D" U% C* C! D& d但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
  V+ }* s; j6 Xdde确实没用过,不过之前用过其它接口,不知道有没有共性。
5 G% C- I7 V  T1 D' `
2 n# e9 C; p9 U8 \触发语句是这样写的execute("        'cost'   ...

& y4 f$ X: _9 B9 F谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
! U, @6 B4 e8 M2 h, O0 m1 `
taoyifei2000 发表于 2012-3-29 21:37
* ]3 z2 g8 N' {& `4 k. }, o' gdde确实没用过,不过之前用过其它接口,不知道有没有共性。
8 O; ^6 c5 ^* U! H, o" r. @8 [* J  u, N% g% m3 a% [
触发语句是这样写的execute("        'cost'   ...
1 K0 w0 F+ R: D9 p* x6 u' W

, V. H/ T. {2 y3 ?6 `) w5 ^% u& L$ I' F3 J不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。  d! q- S) u9 x; u

( \$ E& X7 i) @$ Y$ s  u4 l诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 , Q# ?9 U, |8 [8 x
若叶繁茂 发表于 2012-3-29 22:03 + E3 @2 L6 q, c2 l& q
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
* J- f' n% u6 t3 m) h5 `5 i2 X

" |0 V+ J, s. V8 h) n/ w' b我也没用过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 ( T* C, R5 @! K; X& w/ v& ]! A
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

& n+ S- x; I! F$ A谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。( u6 |8 t( @/ ~/ q. ]- ?

3 p4 |. l  w2 t( d我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
5 Z' `" w& g3 t按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
( W5 }: ]& \; j6 f$ \* [is
9 X* K: C5 X. G2 I        xl: any;( e( G8 I* I) t
do% S3 C8 ~. b' E, X( U; e
        if ActiveX.active then. [$ ]/ W5 r% U( v& i2 E
                xl:= activex.application;7 W5 o! R5 z/ k2 R) @" h6 o
                xl.call ("Macro_Reset");5 E! v0 O9 E$ Z, ?
                activex.active:= false;) r6 Z8 [$ ^2 k4 R  v# H# t# x+ {
        end;
7 w3 G* V9 @, }+ R       
3 m) w$ w; T0 L+ _8 @end;* w- G9 }: U8 m  {
3 S, s2 ~+ w6 \8 `& y. k5 `
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~+ i% r" n5 `+ h
, K1 J1 F, G0 \$ x. n0 L4 m% J
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-23 06:06 , Processed in 0.015159 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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