设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4165|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
/ \7 L2 b1 h( K  Z! i% E0 Lkanal:= DDEConnect("Excel", "Cost");+ \1 |% y) w* o3 Y& G' V
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);1 E, R5 G+ S* U/ A0 Z% X! N4 `. c! ]
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);1 y7 ?0 L1 T( ~! }* i
DDEDisconnect(kanal);9 F7 J( e9 V# y( u7 g" {5 a+ |
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
) i  X' w( ]" D/ k! O# |
. D) t( K1 A( E* i7 H请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 / k2 D, z) {1 P& z" B
0 D9 b8 W" j' f7 e, a3 e) B# T

( ?$ z) m. I3 S/ l; X0 R* \7 p# ^木有人理我么?
' i. Q+ s' y& Q. u$ {9 u) |2 x- |7 v# c, N3 ~
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:* B; a2 {, T1 [' H# p* P  V

* @3 y$ \- T. I6 ]" X- D& rDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);/ C% R3 B  `" L
' k) L* K9 K8 V6 v& e; i+ \
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 2 C  N, q& o: \, R' Z4 X8 D' F
dde确实没用过,不过之前用过其它接口,不知道有没有共性。: a6 P7 f0 q) w0 t" E
7 ]9 U2 [9 @* b! Y) a6 Q
触发语句是这样写的execute("        'cost'   ...

9 X: |4 h. E7 G! S谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 ' c6 ~# X& p8 Z
taoyifei2000 发表于 2012-3-29 21:37
3 u# C9 |# V$ Q; O: M5 ]  x9 Xdde确实没用过,不过之前用过其它接口,不知道有没有共性。4 c: ]8 E) n4 q5 z) x! \

) S, G4 u5 ^$ j' Y$ O# X* g- V! Z触发语句是这样写的execute("        'cost'   ...

0 H: f7 o, M: Q# B" z9 X7 Q7 m0 }
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。) Y! a% O  x5 \5 z9 U# P
( C9 M$ R7 ]2 @# @( q( @4 B
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 $ u, m+ r! \: A% \
若叶繁茂 发表于 2012-3-29 22:03 % y9 R" _7 e6 w& X3 }) T
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

) I4 M% ^. H/ M& k+ t5 ^& |4 S
我也没用过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
; y/ ]$ O5 E5 ^/ }6 i2 A我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

# E- S. O, [! J  b! l8 b1 S' ^谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。( ]' n  g5 U' S

$ D6 f2 O. D; d) l( A2 U我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
9 N1 C. T8 s8 [" y6 h按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
7 ^3 B" R2 |* B  Q# Jis& V: R& ~* [+ b
        xl: any;
) u' c$ O: P% b$ ?! d; udo
9 f, O( X3 D2 d0 V' e9 Z        if ActiveX.active then
* v1 S. W1 o9 h7 N& z1 W                xl:= activex.application;
3 S0 U! m& X1 c' [; i6 O7 v& }                xl.call ("Macro_Reset");- b! L. t& }' F- `
                activex.active:= false;
2 a3 ^0 M4 k! T5 R1 O7 U        end;8 Y( e$ H& m9 `# t
       
4 C7 T( U8 [! }7 j% I$ cend;
& E( ]9 f$ U' y2 J! C; d, C. U6 k6 j6 C/ Q0 v* N
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
' ~( G2 Y* F0 P0 }" Q. [
! C& @* b# w6 K* L期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-5 16:54 , Processed in 0.016323 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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