设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5511|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
8 g4 r: Q7 w! p1 s2 ~kanal:= DDEConnect("Excel", "Cost");" F3 [. S  H. a- f, h& z# f
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);! q6 u- V# Z. Y+ o/ o! x
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
  x" c2 p) k3 ^& WDDEDisconnect(kanal);
# r! U3 j! o5 d. v系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。; {6 v: m6 n% x! W, O. W5 Q

/ j+ t8 \& Q- `% {7 }请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
6 x. I4 `# w( j- V6 I& S/ f
; t9 |, ^$ z! N: C7 Z
# Q# b# f8 ]% x- J  ^  |* L  m4 b木有人理我么?. {' i8 t: S& t& @/ n
3 ]2 ]) m! r& a
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:) G- ~, _. W( p

/ k: t3 [1 ]) L' @DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);2 _$ C. `; [$ G* G/ ^8 d1 n. T
: g$ j) Y9 n# h, g9 Q9 S9 Y/ r
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
  i3 b+ m( Z/ e9 `& y0 X; x1 pdde确实没用过,不过之前用过其它接口,不知道有没有共性。
2 K" j& H1 U7 L% v0 A' t, q' S" W  R4 w. O7 G6 B2 g
触发语句是这样写的execute("        'cost'   ...

. E- m  Y% J: {+ V5 e谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
7 L. l8 `5 I. T$ Y$ t$ r2 I* a5 h
taoyifei2000 发表于 2012-3-29 21:37
8 K5 V1 P3 M4 @% [dde确实没用过,不过之前用过其它接口,不知道有没有共性。
: V# V. [6 ]: o8 e, L4 _2 u0 D# H- ]7 W9 P
触发语句是这样写的execute("        'cost'   ...
, N# ~, ?3 x! B2 ]4 |( h$ [
* K3 [* Z7 D: Y0 H* E/ A0 g5 C
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
3 D; L* P# D; T  G+ \( A  y
/ H$ [9 q9 C; L# F诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
: O' C0 n1 `9 A1 E" D
若叶繁茂 发表于 2012-3-29 22:03 4 Z  p9 I% C( p
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

! `1 q! e8 N7 k0 @4 c: G! r+ O- Z0 q$ E: U9 J5 {' ]* n$ l
我也没用过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 V& A- ]& [8 a7 |我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

  n. d0 N6 g! \( X, L谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
! r$ `$ f& @. z! u
( i: [9 ?+ D" S! u我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
6 b. @( ]) X: j% \  {; t按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
7 S: o6 o( J! Q" P) Nis
6 w6 e3 l+ z, d: J9 U        xl: any;1 n/ j' z$ n- L& O# f0 `, X
do
/ B7 Z& S  I# Z( R: d        if ActiveX.active then0 C1 B$ C! F: b1 ^1 h9 x9 Z9 u
                xl:= activex.application;
7 l  |7 t5 n9 L* x+ w: j                xl.call ("Macro_Reset");
7 U( E/ L! j3 i9 a, n                activex.active:= false;8 H7 K  {9 O& B+ I8 e
        end;
# r. Y9 t' n5 _( a8 J/ E! _       
- d; a( r8 V/ Q, ^/ Z9 z3 Xend;
$ L. [/ K& Q5 N7 U6 ~! u4 K$ d" ?8 Z6 ]( f8 h+ D
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
* K" E9 O3 d5 A( `- M- C9 \1 P/ s5 w8 v4 k/ \
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-21 19:55 , Processed in 0.015406 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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