设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5509|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:9 }8 X1 @9 Q. H0 A5 {( q
kanal:= DDEConnect("Excel", "Cost");1 ]! f' X0 K& ]& B  @* F' W
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
3 f3 ^5 N/ {* P8 D  [, x( u* A; IDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);1 n: O' g$ N1 @# \! T
DDEDisconnect(kanal);
" [; A8 O. X) D6 s3 H# c系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
9 D$ X) |. W# u6 M7 k" C3 r) F% r) m) R& ?
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
6 [, q- {) v. Z' f0 A+ |1 y: B: c, X0 o8 l5 o$ r
) e1 U0 |* c8 A" [8 a# t
木有人理我么?# d% V8 j5 B( v$ j) ^

4 T% y* G, s3 N- J' d9 [2 n我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:! D0 F3 k; Z+ h7 D* x) R# q# Z+ Q: ?

+ ?8 ^- k9 \! g8 b3 G" lDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);8 f7 s4 c( B% s* r: b+ H
+ b. U& [; q! u. K' e4 b: j& Q
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ( |6 c4 s3 `% T* f- m' d
dde确实没用过,不过之前用过其它接口,不知道有没有共性。- Q& x; \0 C) p: V' q

$ C' G1 F; O; ?/ p触发语句是这样写的execute("        'cost'   ...
2 T7 F5 V' v! J+ T9 e8 j* h; S- l8 o
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
: u' R  l) O; u2 g% M
taoyifei2000 发表于 2012-3-29 21:37
5 y$ _% ]% H3 _( U9 O; F$ tdde确实没用过,不过之前用过其它接口,不知道有没有共性。
& G% q3 @7 K! m0 [2 b+ Z% ~& d! {5 ^3 C9 ]2 [5 S2 o
触发语句是这样写的execute("        'cost'   ...

# z" y6 s; I0 O% u0 L6 L! R, o1 O# R9 ^- l
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。5 F1 k" ]% X! f. ?8 n! {1 t7 B
: }# e6 G; v! m3 H, m0 W) ^
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 9 [: C+ w0 Y+ W+ @) h
若叶繁茂 发表于 2012-3-29 22:03 * T2 r: [1 p: Q" x! M4 p
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
( B1 W5 Q2 J4 c( V# }* u, q

3 r( Z( x# W; j0 }7 y% S3 Z我也没用过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 ! y9 e# Q) K% `. s4 z! q
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
$ G+ c( J1 z6 k9 T, B' U; N/ T
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
* z9 |4 u4 }% a' j- Q/ g
+ N  `! [* w. S% q0 B( S7 G我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
, A* _- k# {  V) K3 V( A按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
8 G/ Y6 E/ Q0 c  Y: h, `5 Wis
4 L0 b& z4 X  w8 C+ H# j9 P        xl: any;) K6 ]% m! g/ o* p$ l
do
: O/ \% H9 c, ]' P5 [& e% F; j        if ActiveX.active then% L+ @' V+ b0 q2 a3 `+ J6 M( k
                xl:= activex.application;4 Q' D& c) ]- ]/ w& E' u
                xl.call ("Macro_Reset");
5 \9 {6 y; d' b9 p& w7 H. y                activex.active:= false;
# _# H0 S/ c$ `" Q/ W" Q$ q" l        end;
, m* [4 h. c: g: \' R       
  u$ K, G( G  c6 Nend;' n& C; ]1 d1 }3 K

" h# G" P+ t- Y9 k显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
; Q2 Q. o' t( n: I+ o
, J- l) I, R/ M2 B; j5 e期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-21 18:05 , Processed in 0.015930 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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