设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5555|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
' K/ p  @' q" Zkanal:= DDEConnect("Excel", "Cost");
/ A% P0 `. |8 v5 A" EDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
% R# n* A) Q( n- B) f& }$ `DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
% Z& ?% `$ d( H( q& X9 hDDEDisconnect(kanal);! K6 h* t+ ^% e6 [$ f/ Y" w8 N
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。; d8 d8 C% g% d5 I: P9 E3 A7 q/ w% J

( L9 h( u7 Y( I: L3 A, @  T# E% H请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 ; d: m$ L: V9 i! D# i2 o* I3 [  l
7 P  P* D) K2 c/ P' P5 v5 _
; k8 t6 t% m0 b% G( l* i& @7 g
木有人理我么?
0 m2 L) A/ E5 ?: k( r6 @1 z( O1 X. M+ J# X* R
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:( r% K5 R# {9 l- I. `

2 _9 ^/ d+ {3 p& y3 V1 UDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
2 V$ }& L3 Q7 v! H: f
7 H! E! g; z/ \2 j但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 ! H# ~4 q9 G2 D# p# D8 Z  `3 R) t
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
4 [0 s; [9 c; r$ Q4 S1 q1 [- }. i( f" u" X$ n5 l0 y8 A' V
触发语句是这样写的execute("        'cost'   ...
' T  o9 f# ?2 c0 S2 f( s8 e/ D" j
谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
  X# ^6 O1 O4 X* P
taoyifei2000 发表于 2012-3-29 21:37
0 L. M5 x2 J- g+ v9 [. W- _! [; l+ Edde确实没用过,不过之前用过其它接口,不知道有没有共性。( o6 W3 t8 Q$ R" k. g

- Z" W& S0 ^4 T$ S, Y触发语句是这样写的execute("        'cost'   ...

7 B* W: O2 p. e- h# a* F& H9 r# g! W2 N
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
& w1 c+ A2 B# Z9 G4 D& L( }+ ~6 z6 [( p4 n- j# _. Q6 o
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 5 G& c" |- T3 a
若叶繁茂 发表于 2012-3-29 22:03
  F$ s/ Q, Z3 R1 t" K2 x( h' D不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...
( P8 m- ~' O: `, t4 t9 c

; _9 p! T3 j: F$ F: j我也没用过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
* W; {# {1 m% `  o: K; k4 l我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

8 [4 h" [4 r3 O, j4 p& a; @谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
9 e2 D9 E" T7 y8 ^% F. P" O4 N. `, a/ @* b) k$ O
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
0 X' i: W5 D9 w: O5 J  S按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:. Q' {" U3 U2 R2 d; `$ G7 e7 ^. c
is8 w6 T5 K+ p6 }$ N' Q( l
        xl: any;* h" r- K& b7 X: R& d' d
do$ c7 g+ p+ f- H7 F
        if ActiveX.active then
1 w3 a3 q; A! u# o                xl:= activex.application;
" I$ G2 U1 X& k* ^% [9 |# l+ l                xl.call ("Macro_Reset");
$ y6 T. m  _' t0 n# y& O                activex.active:= false;
* B* K+ H; R5 q, l  n- v, @        end;
$ E" m9 n. ~( T0 V        ; t( M5 l( k$ k; b$ N* i
end;
, n5 \& m$ q, [2 u
) ~& D) f/ A2 X3 \& S1 ^( z+ l显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~7 ?, h- m# ^! P6 k2 k

6 p+ C# i2 s$ |) U' y' P4 V期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-7-6 17:49 , Processed in 0.018088 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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