起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 97|回复: 4

【结贴】紧急求助-四川联宏**

[复制链接]
发表于 2007-9-6 10:43:27 | 显示全部楼层 |阅读模式
非常紧急,怎么样实现如下的VBA

在Word2003的A.DOC文档中插入一个书签名称为DBR的[B]文字型窗体域[/B] 使用VBA将此域中的内容改为"1234567890",VBA代码为:

ActiveDocument.FormFields("DBR").Result = "1234567890"

在JUSTEP 2817中我使用如下语句
var
  FileName: String;
  o:   Object;
  app, docs, doc : System.DispatchHelper;
  field :system.dispatchHelper;
begin
  FileName := 'c:\A.doc';
  o   :=   ComObj.CreateOleObject('Word.Application');
  app := DispatchHelper.Create(o);
  app.PropertyPut('Visible', [True]);
  docs := DispatchHelper.Create(app.PropertyGet('Documents',  []));
  docs.InvokeMethod('Add', [FileName,False]);
  doc := System.DispatchHelper.Create(app.PropertyGet('ActiveDocument',[]));
  field := System.DispatchHelper.Create(doc.PropertyGet('FormFields("DBR")',[]));
end;
在Field := System.DispatchHelper.Create(doc.PropertyGet('FormFields("DBR")',[]));这种一直报,FormFields不是属性,但是将("DBR")删除只留field := System.DispatchHelper.Create(doc.PropertyGet('FormFields',[]));就没有问题,只是定位不到我指定的域。
紧急求助,请问上面的VBA代码要在JUSTEP是怎么来进行实现,谢谢
回复

使用道具 举报

发表于 2007-9-6 11:51:28 | 显示全部楼层
这样可以吗?
field := System.DispatchHelper.Create(doc.PropertyGet('FormFields',[‘DBR’]));
回复 支持 反对

使用道具 举报

发表于 2007-9-6 11:55:56 | 显示全部楼层
ActiveDocument.FormFields("DBR").Result = "1234567890"

ActiveDocument.FormFields.Item("DBR").Result = "1234567890"
的简写
所以应该先得到 FormFields 属性,然后得到 Item 属性(有参数了)
最后再对 Result 属性赋值
回复 支持 反对

使用道具 举报

发表于 2007-9-6 11:57:36 | 显示全部楼层
这些内容可以到Word中看看
请参考 http://bbs.justep.com/forum.php? ... ghlight=application
16楼开始的几个帖子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-9-6 13:01:22 | 显示全部楼层
嗯。非常感觉,参照4楼给的地址解决了,解决答案如下:
var
  FileName: String;
  o:   Object;
  app, docs, doc : System.DispatchHelper;
  field,Item :system.dispatchHelper;
begin
  FileName := 'c:\A.doc';
  o   :=   ComObj.CreateOleObject('Word.Application');
  app := DispatchHelper.Create(o);
  app.PropertyPut('Visible', [True]);
  docs := DispatchHelper.Create(app.PropertyGet('Documents',  []));
  docs.InvokeMethod('Add', [FileName,False]);
  doc := System.DispatchHelper.Create(app.PropertyGet('ActiveDocument',[]));
  field := System.DispatchHelper.Create(doc.PropertyGet('FormFields',[]));
  Item := System.DispatchHelper.crate(Field.InvokeMethod('item',['DBR']));
  Item.PropertyPut('Result',['1234567890']);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-15 20:35 , Processed in 0.045125 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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