设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4453|回复: 7

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

  [复制链接]
发表于 2012-3-28 22:25:21 | 显示全部楼层 |阅读模式
小妹想通过 plant simulation 的命令控制相关的excel 文件的行为。但是一直被说语句错误。。。我是这样写的:
! G5 [: t9 U$ u4 ?kanal:= DDEConnect("Excel", "Cost");( ?% d1 v% j" W* T1 K) E
DDEExecute(kanal,"Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value", 1000);5 K! p8 k7 z- h& n" \& u; d
DDEExecute(kanal,"Worksheets("Cost").Range("B121").Value = 35", 1000);$ |" @" f3 g; V$ b3 r2 g( x
DDEDisconnect(kanal);8 h; V5 n& D" q
系统一直报错,说语法有错。。。excecute 语句里的 cost那里有问题。。。。
( v: k1 T; r3 f3 ~5 Q& _
9 m: a' S# G) @: {& M请高手们不吝赐教~~小妹先谢过了~~~~
 楼主| 发表于 2012-3-29 16:43:02 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 17:47 编辑
+ }5 T+ D- f! O8 k7 X5 ^/ x, ^' Q
" z% y: x4 G' b$ Y( j/ }) m2 `+ q" Q$ g+ h2 c8 v7 y
木有人理我么?: d0 z9 S$ Z" O. [+ V

+ l0 I; S- a' T$ Y! i我去理解了一下系统的报错。。。我觉得是因为系统把头两个引号看作了一对,导致 "Worksheets(" 成了输出的command,而后面那一串电脑就自然不认识了。。。。所以我就试着用中括号把command整个给括起来~写成了这样:
+ x2 r6 [6 q5 G% N$ U( B5 u; i7 y$ y8 y. K; Y3 T# x
DDEExecute(kanal,"[Worksheets("Cost").Range("B129").Value = Worksheets("Cost").Range("G31").Value]", 1000);$ {9 x: g( B# _8 [! D

% i3 c( N% Z% ~" e! P2 Q但是还是不行~~~有没有高人能给我指点一下~~我应该用一个什么方法把这样的command输入excel??
 楼主| 发表于 2012-3-29 17:48:15 | 显示全部楼层
 楼主| 发表于 2012-3-29 21:57:39 | 显示全部楼层
taoyifei2000 发表于 2012-3-29 21:37
  T6 A! o) a! Q+ ?dde确实没用过,不过之前用过其它接口,不知道有没有共性。) b; j$ z: Z  I+ e" d6 G/ N) `% a

4 r& G, r' a1 p触发语句是这样写的execute("        'cost'   ...

8 ~( u/ w& s/ Z谢谢你~~我试了~~不报错也不执行。。。电脑沉默了。。。
 楼主| 发表于 2012-3-29 22:03:28 | 显示全部楼层
本帖最后由 若叶繁茂 于 2012-3-29 22:10 编辑
9 U/ S2 i. [5 I# {0 s( _
taoyifei2000 发表于 2012-3-29 21:37
! b# u; E4 W# [7 U9 }dde确实没用过,不过之前用过其它接口,不知道有没有共性。
( O& R0 Q+ R# Z$ o4 A: Q/ E* x! p& z0 f
触发语句是这样写的execute("        'cost'   ...

8 d) g$ \/ S* ~# A1 I8 I& H/ w6 n
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde的热键连上。。。不知道这样行不行~~我去试试。。
& g2 e/ H( D1 e9 x" w+ ]9 V! U! L: V% N3 s/ H
诶不对阿。。。连热键是单纯的传数据啊。。。。哎呀。。。就结了。。。
发表于 2012-3-29 23:13:45 | 显示全部楼层
本帖最后由 五五 于 2012-3-29 23:16 编辑 # ^( b% m! q( K- n. D( c! a, n6 G
若叶繁茂 发表于 2012-3-29 22:03 9 {* P; O: M0 @, K1 S
不过我又想了一个办法。。。我可以直接在plant simulation里面写表格。。。然后用dde ...

4 k( d# X' r! z5 B, h* |$ W7 G; n/ E# L7 p$ O* e/ V$ k4 ~
我也没用过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
+ y9 C+ }9 H& R2 t, e我也没用过DDE 目前研究中。。。不过如果你不嫌麻烦 可以用ActiveX操作excel表格的。。。我都是这么干的  ...

0 N, @" e: i7 _! {谢谢~~前两天突然不能回贴。。。今天发现我的邮箱没激活。。。好奇怪。。。
" L7 X" c6 M6 e( v+ ~. Q2 K- A* n. ~2 [/ u/ b7 u
我想向你详细请教一下activeX 的execute语句。。。我的目的是指挥excel运行一个宏。
: Z5 a' j; S2 X/ A4 o按照plant simulation自带的例子拖了一个activeX控件和一个link到我的network里面来。并且控件已改成了 excel.application。link 跟我的excel文件已经连接。于是我写了:$ i( B+ V5 P! A" `8 F% C
is
7 Y: N5 y6 V% c$ ~" I- E        xl: any;4 {1 p/ t- D, O/ s& P; x
do% w, [1 ]7 c/ |7 t  s# t" [
        if ActiveX.active then; e2 b% c4 z9 {
                xl:= activex.application;! m, |7 @1 a# |- ~& ^
                xl.call ("Macro_Reset");* w+ L- _- a# ]3 J5 y' S' U+ }. m0 c
                activex.active:= false;
0 F  G! c2 a4 A$ ^1 f        end;7 W6 n1 t! |3 n0 w5 n9 v: c
        2 ^) D( o. U9 I( e2 h% d8 D# I
end;/ u* B; S: y3 T2 B

# I$ t, @# M9 N7 v3 J8 A/ {显然plant simulation 不认识 xl.call ("Macro_Reset"); 这句话。你之前有提到过一个activeX 的execute的语句~我在帮助里面木有找到,所以还是想问问~~
# Y6 C1 ]# Z" Z' s% z" v( A& }3 Z% n7 Z; ~4 ]( B& X7 u
期待你的恢复~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-15 02:26 , Processed in 0.013838 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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