设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4312|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:; U  @; }! p+ {$ L
kanal:= DDEConnect("Excel", "Cost");, W. }. S7 Y. Y; ?( Y% M3 A! A) ]" Q
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);
3 {" w' l( x; S+ V: y% B6 EDDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);" W9 \" b" K. A. f$ T
DDEDisconnect(kanal);
! t& L* i) s, q系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。$ ]9 G) s0 D9 L. q* U% w7 R
! k1 l' }6 Y& R
请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑 $ f7 p( h# ~; T

! R2 B( k" S9 Q) \- L) X
; k) r" x) E" u) `木有人理我么?) K% I' Y7 [' O2 C* G& w

+ V* V- V5 f3 O# D9 ~: Y& f我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:, v% y! L4 u7 F' q0 u1 j* k3 H

9 c5 Q1 O8 {$ W1 B# b  r% _" N" N& L+ LDDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);+ {' K+ Q0 H( K" T8 e
+ K3 @6 L/ E% b; A2 G" W6 ?( R
但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
, O3 C, w; }- Y$ ^7 Vdde确实没用过,不过之前用过其它接口,不知道有没有共性。- [4 }$ P" b$ A2 D6 x% ~" u& z
, {& q" f( `* ^
触发语句是这样写的execute("        'cost'   ...

1 s9 y$ R+ B. |0 A; d# z. v谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑 # Q, F! Q( B$ \9 \2 J
taoyifei2000 发表于 2012-3-29 21:37 : W$ t% }0 F. t$ n/ \' r6 r
dde确实没用过,不过之前用过其它接口,不知道有没有共性。) e9 E, f+ B7 x, e
+ F* U" H' I: w
触发语句是这样写的execute("        'cost'   ...
  u! C% \- g5 ~2 [4 P4 _* Z
: R* v4 _9 F4 Z/ v
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
7 \0 k7 k! F! Z2 t+ z5 y, A: S" W" c5 m9 B0 x: i
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 9 A# [6 }4 K- o0 C3 J1 B2 M( w: v
若叶繁茂 发表于 2012-3-29 22:03
1 M$ K9 k* w' ?4 E2 I8 A/ O不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

# w/ g; {8 C% _9 p4 T- b8 y6 [7 R6 T3 B/ z' k% V4 }7 N
我也没用过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 / A& q9 i* J: `6 f
我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

+ F, P$ W# q' T- r' p谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。* U* W0 U! Z9 @2 X0 i
/ E' R' `9 z( F( E
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
* G) [- v2 j' o0 S按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:
4 p, u+ X; h1 A2 T& O( }is! `+ X/ e. C3 e& {
        xl: any;3 N/ j4 u1 d# T# V
do
0 ^8 f2 h. B0 R        if ActiveX.active then& I6 v* k6 |  p
                xl:= activex.application;
( t3 ?% J8 o8 n+ h: N( f" C                xl.call ("Macro_Reset");
. d) U; j' S4 K                activex.active:= false;. m2 P* K2 |: J* h- k# x3 l) e
        end;" y) l' S7 G1 W" @& a
       
( x; m  I/ v- i% fend;" P$ @' a' s! P2 y% |( @

9 U! L* s+ s9 X. t9 l显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
2 ~$ j+ c) u# ^) R( r' q! b. f1 x% k6 r( p( O
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-8-22 02:14 , Processed in 0.016881 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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