设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5494|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:0 Z9 R" w, m$ |3 k% ]7 \- {" {/ r
kanal:= DDEConnect("Excel", "Cost");
, B, N3 T0 o3 y" W" @DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
9 L% V& R0 `& q: J4 K5 U. F/ SDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);- y. {2 A; L8 B1 V
DDEDisconnect(kanal);% I; h' i5 y% e( ?# m
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。7 o! O1 ?3 I5 S6 `4 i

/ X+ t' ^0 I5 I2 o$ O9 A请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
- X$ v7 E2 k% R9 n6 O, P7 O" L4 G5 i4 x

: ~) Y# g* \8 d# x+ i3 \8 v木有人理我么?9 V& {7 H' }8 E4 ~
9 }1 F9 v1 n( z0 q! d0 l& r0 f1 X0 J
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
1 G0 n, r; ]- K0 M, K/ L+ ]8 J( v' ?7 q- v5 Z1 J8 y
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);3 x: x  s- m& A; m" u
/ L- R: l. \5 x& @2 `2 W7 X7 M
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 2 ~) |( i; f( f2 m0 J- d
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
% F% N- t0 }* x9 a% c. s* |) z/ x* P5 L5 J" ~
触发语句是这样写的execute("        'cost'   ...

' Q2 X8 w3 S" J, z0 h$ s谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 % k) C# T( W# c) o5 V# o0 |
taoyifei2000 发表于 2012-3-29 21:37 6 Y6 p( ~5 N# j* a
dde确实没用过,不过之前用过其它接口,不知道有没有共性。, ^4 t# r1 k) @7 V3 w5 T3 N

4 m) X5 E5 o/ ]' Q8 d% n7 Q7 l触发语句是这样写的execute("        'cost'   ...
2 {- p0 Q' i' I& B

! F# D$ y7 }) e不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
  i8 a. G: j+ j$ M$ @# L
$ ~* u  h4 x1 E+ H2 ]4 Y0 w诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
" m4 [- O' a, u- `# k2 @( Z* q
若叶繁茂 发表于 2012-3-29 22:03
; z( D( ]" d% a不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

& p0 W7 O0 l8 ]  B8 Q$ u8 T% Z! m$ O
我也没用过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 1 o0 |/ B, f% v# I; z
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

' A4 G" p5 k) ]* B谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
2 J# l4 c2 X% b  h' I/ e* W+ m. V# l6 ^6 A' H$ s& e
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。$ P- E% a6 q  a
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
" W: }1 O- R% U' S0 P# z) D8 s$ @# ]is
! F2 H# z( v+ S- A# O3 A0 e        xl: any;1 d6 w4 P& U' H8 i5 z
do( i* ]; ]- W; \
        if ActiveX.active then
  C8 {- O9 b' U. ?' Y) V                xl:= activex.application;
, g7 d0 ~0 y, Q  f2 ?. @8 H                xl.call ("Macro_Reset");
) D# m$ ?/ y' Q( Z# S                activex.active:= false;: |8 S5 s! X6 {/ C' k
        end;) O- Z/ O3 k9 F, F7 z
       
, C$ ^( W% }9 A. r* M. ~9 M/ A6 Zend;
3 D# l7 r3 b+ M  Q2 D' |) l. K! s
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~, J( K9 W5 Z' A% Y
4 u+ ?4 m: U" x: }8 ?# A! ^
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-14 23:10 , Processed in 0.011588 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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