设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5380|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:. J5 w4 o5 n# z# W5 N. D0 Y
kanal:= DDEConnect("Excel", "Cost");
/ L( g" Q4 k* e6 ZDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);, _, n; b8 i  M% N; W- F6 s
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
, p% \0 g) T+ `$ t- `' Y( S9 IDDEDisconnect(kanal);6 A9 ]; t: Y5 v+ V2 x' i: D
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
3 G4 Q: L. Q- N4 U$ h2 j  l/ \( l7 Q0 F7 [( v- C6 X. m
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 : V4 D. I9 }: G" p4 i' C

1 y0 i; i7 `+ O' C/ {4 U) e. O* G6 G
4 f8 x" [4 d/ b' [木有人理我么?
( }3 G# v0 s0 k4 x& W! A; a
7 ?* _2 E7 ^; L5 T) a. I, N我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:& m+ f- e( ~1 x# \( @

: M1 k7 X7 F9 V3 u# vDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);( R* `8 n9 j9 `1 I4 m& x

9 K9 u9 w( x4 P但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 3 o. N0 u: v7 N) o5 V
dde确实没用过,不过之前用过其它接口,不知道有没有共性。% p0 i  X; |7 A* L; b- a

' P3 O1 S2 _+ p/ F, I触发语句是这样写的execute("        'cost'   ...
5 N. u9 {' l2 l
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 7 X6 j" B6 P- M
taoyifei2000 发表于 2012-3-29 21:37 3 k$ J- Y: Z% m" f
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
5 ^! m+ T6 B& V8 T$ l- ]$ ?* T: d5 y+ r1 d' A( e8 b5 j
触发语句是这样写的execute("        'cost'   ...

# v% E/ o1 i$ ]; W) X! Y) q, F9 U8 n# |, t- z* M
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。+ U5 n- s; P+ L
  D6 B' V# N, Z+ C
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
1 Q! w( C/ {8 I4 e0 U
若叶繁茂 发表于 2012-3-29 22:03 & ^2 Q) z. Y  g4 @: M5 s0 q6 x
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
, V5 ~' o2 }( Y$ ]8 D8 j
; O  a# b7 S$ H; \0 p* G6 j5 P' 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 7 B5 w" w; ]0 Y' a
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

* H% @! A7 f0 F  M- H" q; h谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
# k" A. ^: c% W4 p
4 O# k- g/ F' q& z1 X, `& p9 V我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。" ~. R4 p- J1 U+ D- x  K9 ?$ b
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
, L' i. ^6 c4 J' tis( \) c- P/ _0 J% @" {0 }1 D- w' b
        xl: any;
) B6 }# s6 R$ n8 c% F7 j6 wdo
- ?) j, ?' W3 T& X        if ActiveX.active then/ ^) F3 d: I# B! ]* o8 b1 k
                xl:= activex.application;
: b1 t3 H: j1 t                xl.call ("Macro_Reset");8 ~/ @; q( G/ Q* A5 x
                activex.active:= false;% O. a8 v! s! p, M3 Y- {
        end;2 e0 O* w+ ^) g* s8 ~) }
       
2 y% V. @, j3 N  m) Hend;
1 y) F  ^. J1 m" s
$ s- W% K1 V! x8 K9 j显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~; ?8 ]* }8 b& _; w
. u# \3 {# Y4 K6 N" A# L
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-28 12:23 , Processed in 0.016269 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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