设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5676|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
6 n7 U6 f0 b7 x" ikanal:= DDEConnect("Excel", "Cost");
9 Z4 i* ]$ V4 u# c* O& W5 kDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
  [0 n2 \% N1 bDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
! H6 {) I1 j9 v) P: lDDEDisconnect(kanal);
7 {8 |: c4 y1 f& F1 g系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。4 Z1 ?. x# O: p

* g% H" g' t9 v请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 - ~& @( v' l, H: T( R
9 O" ]4 {- H$ {% k

5 Q! i$ q7 Q4 x木有人理我么?
- S. C( k" \6 s" W/ t9 E4 m7 L, g* U
" S) `* @0 s* n6 P6 J- T我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
" K& r; B1 O! u+ z  ?0 Y1 G4 W/ a0 {& y* |, y
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);0 y& m5 _+ \. {4 O% q

" E! m( g3 R" f3 q' {! v但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37   s  V( e0 C* r8 B4 j
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
1 M6 a& u) s/ G/ K& Q% @9 X) e: @5 E- r7 X( o3 K. X5 x& ^
触发语句是这样写的execute("        'cost'   ...
$ ^( M) c3 e( q+ e9 v/ W
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
: f! ?3 ^  K" S; o
taoyifei2000 发表于 2012-3-29 21:37
3 i' r! {4 j2 e7 W# Tdde确实没用过,不过之前用过其它接口,不知道有没有共性。: `0 _, x" |9 |  @/ P# ?% J- r/ E
0 a2 @9 x# H; l1 t8 u6 D* q3 a* K
触发语句是这样写的execute("        'cost'   ...

) z% Q+ E& N: n4 S2 t% ]8 T8 f) M% Y6 S3 @5 w7 t. F( r$ b# R. K
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。6 O7 u! F2 M8 l
" G  `$ X: v5 E
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
: }* _. D3 w5 d2 v4 r. s
若叶繁茂 发表于 2012-3-29 22:03
  @) T" [( Z+ N# d: W1 C不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

! B# N, g- g* Q0 ^2 j$ W2 A( X+ N0 T
% O" P, d$ k8 @" a6 ^! E0 H: ~# T) X我也没用过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 4 O3 C" r, ~$ @
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
. r0 {  \' M3 p$ n. F7 \4 j2 A
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
  \; u9 ?" f# m( m3 x9 m8 a/ w- v  l# b0 E7 u  j. r7 K  o" k
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
3 p5 m1 L% N. ^% [) E0 y4 N按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
4 `) z' N# e4 m% J- h  B% N% Gis
4 Q' Y& B* h4 U$ e; S9 g        xl: any;
, l! q# f# Q0 O) B; o; ]( V) Zdo
5 A, f/ J  B  ^4 w% t' T        if ActiveX.active then
& o+ k$ U) K) _! Q                xl:= activex.application;
% f1 O, ]0 t+ U! A                xl.call ("Macro_Reset");
2 Z4 q$ P8 J% ?3 s4 l$ P" S                activex.active:= false;
: q5 z+ X) n% \2 `. H4 u        end;
3 x. g9 `8 A- u        & U- |! t, k" Z* I" G3 K& o
end;  a" |) [- U4 L; c% F

. \4 h# k& Q6 U; u显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
) z% a$ @( y8 u/ w( N# s9 W8 T- K: P9 ]2 S# [' w
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-8-21 01:11 , Processed in 0.012996 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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