设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4708|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
7 }; Y% W' `6 d( [3 lkanal:= DDEConnect("Excel", "Cost");
% n9 Q: C& a+ e4 J  {8 pDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);9 _8 E# x, Q; W; B  y: G
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
3 d9 D6 `5 Y; ?* |3 @DDEDisconnect(kanal);1 @0 s, y- g. W3 g
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。0 h; K7 h' ?+ |1 E1 H
& t% `- o  N. {( h7 D* k5 o0 a: \
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
* x$ G' `1 P' M  c% `9 Y0 F4 g0 N  x2 o* U, R7 I" N1 Y
( r. q3 R& e+ X3 K
木有人理我么?
) W( x" ~6 w+ m- T( I; F
: Z% H: a0 w/ z2 x0 e我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
: d* ^7 q: \4 k; y% J
6 _( E/ I# y& N; K$ c! |9 E9 p) LDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
5 |4 Z. W5 ], Y8 C( U4 Q2 S; o! M+ w  k( ?1 Q4 q. w& h0 ^( n7 }+ J
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
6 f2 K. C' U9 i# S0 Fdde确实没用过,不过之前用过其它接口,不知道有没有共性。- m8 N5 g) ]# a  _8 U3 L
4 j3 t/ u% |3 N
触发语句是这样写的execute("        'cost'   ...

: H1 ^' z! {: Z# S谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 - q9 ~/ D! S7 w6 @1 ~8 U4 C
taoyifei2000 发表于 2012-3-29 21:37 & k2 K: g! R5 f% H9 [& `  ?
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
' m& j5 s  ~9 s$ s; a: D/ G% y2 r: t! _$ _, O
触发语句是这样写的execute("        'cost'   ...
; E1 R1 f: f# Z9 f
8 F  z. \1 Q; G3 s  E
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。6 S  R) `" T7 e, U% Z! o2 |

6 V# s- C# S$ e4 ?诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
6 j$ _. _, W- Z+ H2 e7 o
若叶繁茂 发表于 2012-3-29 22:03
3 ?, u7 }; m. y6 P7 [1 O不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
" W) M2 d/ e- n2 L) v: e

  d$ q5 K" h8 M) v$ 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
6 M2 ]5 u/ X' u# j) a3 v0 ^我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
! {( E& z) e/ b7 X
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。6 L! {/ C$ P- z, Z

( _% n1 F/ G$ e+ w8 I# _我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
8 Z, I" j+ i  J$ V& N按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:1 G# Z! U2 K. R6 [: `6 r2 `
is
. F* ^# g$ f" x1 d9 N        xl: any;
2 j4 Q0 N6 U! R5 m! S/ V& d! Sdo- y% w; i$ N0 `. \! }  Q
        if ActiveX.active then
6 z) U5 g7 X$ _6 O5 L2 z# u                xl:= activex.application;
0 F$ g0 K$ h7 }' ~                xl.call ("Macro_Reset");. z3 j1 R& P/ W# q# m/ J
                activex.active:= false;8 I; l& s* {+ ~5 U' p# h, l1 X
        end;
8 L2 G8 R' T0 n7 y( b" r; K          `8 n1 X: x1 F$ _. j( ~. G$ y& D+ s
end;. m$ c1 E  I0 `/ p
# r' n2 h1 w' c1 ?
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~4 M: j! L7 m1 D

6 h/ Z) L: m1 }9 S6 M! q# ~1 m期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-11-1 04:35 , Processed in 0.021675 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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