设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5342|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:# \7 v4 s0 q# R; W" n
kanal:= DDEConnect("Excel", "Cost");
/ ~) v% z# o* w. i6 X' D0 QDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);, u' t) {3 g2 ]# C# h- S
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
- {# m3 T+ @& n. T$ iDDEDisconnect(kanal);& G- x/ X; c3 y- k. p9 t, q: u
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。9 ~' ~' S9 k! I# k: }
1 o- F' V; o" J$ D
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 ; M1 O7 p' R% b( _' g5 z8 F) r5 V8 M
+ W  k. s* c, J2 r4 e

2 s2 ]. L( r( |, x! ?6 F# d木有人理我么?, Z6 l* s- T& U, Q" |' w# ^

3 I' \( T4 h: E: P6 P我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
0 s0 s; v' h# {0 z. z: M" d7 l- T4 S0 V0 D; w0 O9 }
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);
% f, I6 I: A- E" Y( d
5 Z6 B3 `* K% F但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
: ~; d8 \4 @) b2 \7 qdde确实没用过,不过之前用过其它接口,不知道有没有共性。
  i2 X2 \" _8 N# {
8 ~) c5 R" Z; `9 c7 W& F触发语句是这样写的execute("        'cost'   ...

6 R# p4 b1 Z& |  N- S0 e; e谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 1 H7 v- s, u: H4 h, T+ x. {
taoyifei2000 发表于 2012-3-29 21:37
. P8 q' r  |2 r6 D5 G: E5 Vdde确实没用过,不过之前用过其它接口,不知道有没有共性。3 ?6 d' M8 o2 R7 N9 _
+ M* c0 u  ?! }1 h2 M6 D
触发语句是这样写的execute("        'cost'   ...

: b3 Y/ y$ X$ X' N* B; D, t$ g% L3 i, V+ i: y0 _2 n  m% \
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
1 d6 `5 U" s  O: R" ?: ?
; `4 u4 i9 L) v9 E% x诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 ! b# n, Z7 G; _! o2 [
若叶繁茂 发表于 2012-3-29 22:03
& p8 z5 ?% @1 Y4 ]不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

# I" T0 c( N: f+ ?2 v% D! y7 l0 E: Q/ v9 v0 P- B) j/ n6 ?
我也没用过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 $ r' p: |  `1 F. X, Z
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
3 s5 w7 _$ E* O+ H3 r  w: N! u
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
5 N. J" V# i8 w. {2 X$ w, e3 U7 l+ p: {8 U9 A9 ]
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。+ b. @6 s0 O5 a( o3 h) j
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
' Q/ t/ h. g3 K( f" f: qis
' O3 R9 ]* W+ j& g4 \3 d7 }3 ~- S        xl: any;
5 a6 [. a2 o, v) `- O: C& Odo+ j& \: }; Y: ~; u: e0 i( ~
        if ActiveX.active then
- _' n  O5 g" c5 Q% |6 C: n, E, Q. }                xl:= activex.application;; I; }; {5 T3 ?' c
                xl.call ("Macro_Reset");
  G. \0 Q! U! R( }0 |5 Q, B                activex.active:= false;
7 `/ J% z' U( d4 _& b+ E: B5 \        end;( c4 [! D0 C5 S. V1 f3 i
       
% Y( ]. M  H. r9 s+ x: fend;& \1 J! b: ~6 z7 Y: X8 V
3 l- A$ r8 B* m& y- j
显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~) Q. U8 P% @& ?! i! U  v
  i9 O* s' ?' x- I$ B4 W; e- x
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-4-17 23:32 , Processed in 0.014916 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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