设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5388|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
* A0 `6 A! i" i% N* n4 f; Tkanal:= DDEConnect("Excel", "Cost");9 O/ e4 C7 p' s/ N6 y, I! w# L
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
" A# B( Z- v5 Y* @1 M' [DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
7 Q6 p  H, q: y5 B* }2 PDDEDisconnect(kanal);
+ @) k9 q( p3 q2 |8 _系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。- w7 B9 i8 \6 Z. R' m
& _- n! e: z+ N5 K8 |7 A
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 , N& m+ v/ b9 X! E5 h1 L
  O; e# I% [; W( f
/ j: v2 v" @3 M2 O
木有人理我么?) G. P/ r# q) F' L  h
# _* K! {" X, \" ?, i+ L
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:0 P5 R& N$ x& O4 g

* [6 s# X& h: Z$ N/ ^DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
* i9 S! i) h2 x+ G& f8 P5 o3 H) u) j4 S6 ?5 s" h9 C) Q0 R
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 % O6 z. k8 M& X) c2 D/ J, r5 d; t
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
  P! ]+ ]# W7 H( c1 A  [6 o  I7 z
触发语句是这样写的execute("        'cost'   ...
. k7 q9 r. B  I' n; ~' h
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 % s/ Z0 F: m; c# I6 V
taoyifei2000 发表于 2012-3-29 21:37 2 {* w. E4 n1 z
dde确实没用过,不过之前用过其它接口,不知道有没有共性。2 V- q" H0 k: }7 k
! B) m" ^' q1 _/ P& |7 r) s0 z
触发语句是这样写的execute("        'cost'   ...

6 }6 n- z- g6 ?$ M" {6 \: a" P% Y* j' d, J, Z+ g7 j# N
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。( z6 z* z  }" ?/ [
" d0 k0 q, r; S- [
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 7 x: D+ H5 @. K) \$ ~, E; |
若叶繁茂 发表于 2012-3-29 22:03 , W4 }$ j* f. J5 Y
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

' Z9 U' i  G( P0 \; X- s( L
- K6 F* m; P& h( 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 3 ^$ ?' O) f6 `! c# }8 R6 [
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

. @3 q2 J1 R( h谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
% i- \& E+ [. _+ }( K4 o" ]5 n! B( X$ ~2 m6 I. s& ~! a
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
4 p. t+ g7 V8 K' ?2 t( ?按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:9 Z1 w4 t% M' N7 D
is
; f- W: [7 S' k4 U5 w        xl: any;
' e  q4 P) b( |- w. D' Q' Hdo5 \9 |. H; g. P# Q+ g) d- A
        if ActiveX.active then, n, y) p: N  O; |4 `7 q- H+ o4 X
                xl:= activex.application;
0 ?5 w! C/ K4 Z4 K' k* r! z                xl.call ("Macro_Reset");
% X: e. B3 Z7 ^  ]                activex.active:= false;" z* X- ], T2 u( y% H
        end;7 N3 Y8 `1 a: T% K( T
       
* U4 O7 c& s. ]3 {' ?end;( _* k7 g9 R. o; [1 s
8 p/ d8 b1 j0 u. n5 m& ^
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
# a% v, r" u% ^* @' J3 e) q
6 c! ^  a. Q3 g1 w期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-30 02:00 , Processed in 0.020974 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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