设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4622|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:2 I  c. T+ _4 X0 K; y8 p, B/ @
kanal:= DDEConnect("Excel", "Cost");* n& V# @+ E; T3 ~9 }
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
4 z* Q. \  h0 F" i- _2 GDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);8 C& i0 }4 D/ J+ l
DDEDisconnect(kanal);
4 T1 Y4 o" x0 j, X系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
+ C8 D6 ^4 K: ?9 \2 A/ j  b0 W2 w- B" B1 C/ T" P( `
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 " T, U3 b, V; B' z

' H7 U  G2 j% B. o! B# P
/ }4 e% h  ?; M9 O# d% B木有人理我么?
3 G0 E# R) |. t$ c- H. |2 l: J" i+ T0 I
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
4 U$ K- h: a" f7 {/ x( `. O6 H# P6 d/ q& Q4 k+ W$ t
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);  M3 t5 C& o* l
0 n, B- w( p# \6 z/ ^2 T# C3 U
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 / u: o: n  }% i0 c
dde确实没用过,不过之前用过其它接口,不知道有没有共性。% F& F& k: x6 U6 v! m  ~
+ U+ p6 I. x( Y3 R% g: V9 t1 H
触发语句是这样写的execute("        'cost'   ...
/ A, ]2 C- B  Y9 b* ]& n
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 7 W( d2 b0 u! L6 p1 n3 J3 f# E& b; L1 X
taoyifei2000 发表于 2012-3-29 21:37
9 M1 r5 w- Q# g# V8 kdde确实没用过,不过之前用过其它接口,不知道有没有共性。9 U5 ?4 n" @" y' Y& Z2 c
$ X0 e" S; c- K! ]# ^/ \! p. d
触发语句是这样写的execute("        'cost'   ...
1 e8 n5 v( ]0 K/ H) l1 A! m

, W6 B3 h9 {  ~7 ~/ l- C不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。, P0 i  `. U6 ~7 g: @9 R
, L& i- u6 b& m. g5 e8 q& J
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
2 L! N1 a8 e1 S% L' r$ W. Z  R4 v
若叶繁茂 发表于 2012-3-29 22:03
  p6 S* y/ F+ U4 c* M! g3 y: I不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
- ~, @. S* v* X5 w3 [  |' n
' M/ c0 _7 l% h" c$ u% J
我也没用过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
- |) Z; v( V4 L6 Z* d我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

8 Y7 m9 J* \, v3 o# G* F* ^+ e谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
$ e) Q! m  @% b1 l' f3 d8 |7 G: q" s8 |0 A) N5 `
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
" {+ k- T: @8 F' x! q按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
6 v( u2 X: {* O  N+ e+ O& J- v- [3 {is
8 p( a2 M8 \" u- u- {4 a  }% m        xl: any;
0 w( l& t/ k$ d$ qdo) r2 j  R* l& q! k; b4 o) k
        if ActiveX.active then
$ ?$ C$ Q  d8 S' ~7 ~0 O2 m                xl:= activex.application;! _# v2 N" q- F0 T
                xl.call ("Macro_Reset");, h, u$ k" c3 ]0 |8 u6 A
                activex.active:= false;
% T  M; i2 y' O" A1 m) S" C7 n" v        end;
3 p' w( z0 ^' m8 M; J       
( W& x4 p: c8 s, Nend;
8 y: J- c' F, G- H5 i/ K% H2 @5 ~7 h+ d& ~& |- m; k
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
. c$ R: b) N0 w, c( G
: Q# ~  l0 U) q5 s3 w  b期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-10-18 06:08 , Processed in 0.019233 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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