设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4152|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:$ R1 J8 U8 ]: D; O: ]
kanal:= DDEConnect("Excel", "Cost");
9 y: o2 t4 ^9 K+ _0 Z* M3 s9 nDDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);, y' ?. T+ q" \8 p1 v
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);
9 ]% w0 t* @7 X3 fDDEDisconnect(kanal);
9 g+ m/ C; q9 R8 R6 s8 H" g系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
) ?; w& f. a' x
6 ?( }2 `4 o1 N: b* W. ?请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
0 ^1 [4 S( q( e3 b" z0 t
/ ~& W3 J7 `# s' ^. K9 X- |4 l3 \( W+ T6 r
木有人理我么?
+ L! n4 |3 s1 H3 ~/ A9 E1 [! I8 H2 }$ ^/ x; c2 `4 ^; \) X
我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
7 h5 _- |0 \5 }- Z& W: R4 Q& ^9 B/ L- G# O9 k# ^- k1 K$ t
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);8 f# Y4 G; I# z2 h! G% d

( M( `0 X2 q( t& m0 u8 F- [) S" \但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37 , f/ r6 R! E5 s2 r0 w( z) D
dde确实没用过,不过之前用过其它接口,不知道有没有共性。, a, {3 M! M* i8 Z! Z  W
0 k# W+ S7 [: l+ B; Z/ h$ L3 t
触发语句是这样写的execute("        'cost'   ...

7 ^- S; X5 w& ]谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
3 m) B/ R0 Y6 j
taoyifei2000 发表于 2012-3-29 21:37 ' j5 B7 R% H$ ~. {2 D  ~3 Z
dde确实没用过,不过之前用过其它接口,不知道有没有共性。
/ a# @, n  V: |% _% ^  I  S( z& G0 k7 c+ ?
触发语句是这样写的execute("        'cost'   ...
3 T3 ^! A  q/ p* Q& O  J5 j& Z: f
6 K3 _. w. d# H: w
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。* O% X3 g  F2 |0 x. l
  K8 X1 s# X% u9 B8 v
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑
, u: i) E* n8 d9 D: j
若叶繁茂 发表于 2012-3-29 22:03 ; M3 J" Y: o! e% e, ~
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

  u8 E& d/ ^: Y% ]6 l1 N) i, ]- D$ v! Z: S
我也没用过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
' P* }6 m8 w# }) U8 K" ]$ T我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...
& j' E# O0 v( I
谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
' k& D8 N( T* [  T& }! L: ~' C% O7 A: q3 I7 S/ H% {
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。8 }: {# Z8 C, d
按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:/ N9 J9 S: V" Z4 S
is. M. [* i: o+ [; |" _! s0 `- P
        xl: any;
0 a! }  ?- P, C) Cdo
) O1 ^0 m5 `$ F& l' S0 f+ L        if ActiveX.active then
, `* `4 S. B2 |" A9 U# b                xl:= activex.application;% f( {! a) q9 J2 d! k
                xl.call ("Macro_Reset");0 k" s9 q1 A! V
                activex.active:= false;& V& z5 _3 c" r- f$ h
        end;9 C+ @" t1 R' W
        6 E& v1 U, X) r: {) |6 n
end;0 l$ |: J) Z, W9 \

  ~7 ^, ^6 C/ h1 ~9 U显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~$ e3 M2 t, p! t$ a
" E7 d; ~; V+ a1 ~3 x. ^' A/ @, ^1 h9 _
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-1 02:38 , Processed in 0.016249 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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