[转载]在Delphi中使用CreateOleObject方法

(2011-08-24 14:20:47)

标签:

转载

 

对WORD文件进行操作

使用CreateOleObject方法对WORD文档操作具有先天所具备的优势,与delphi所提供的那些控件方式的访问相比,CreateOleObject方法距离WORD核心的操作“更近”,因为它直接使用OFFICE所提供的VBA语言对WORD文档的操作进行编程。

以下是我在本机上所做的实验,机器软件配置如下:

Windows XP+delphi7.0+OFFICE 2003

这个程序很简单,在页面上放置了一个edit和一个button,每单击一次按钮,就会自动把edit中的内容添加在后台中的word文档中,程序关闭时文件自动保存在当前程序的主目录中。

unit main;

interface

//如果要使用CreateOleObject的办法对WORD文档进行操作,应该在uses
//语句中加入Comobj声明和WordXP声明
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Comobj, WordXP, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
//    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  //把这两个变量声明为全局变量
  FWord: Variant;
  FDoc: Variant;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
FWord.Selection.TypeParagraph;
FWord.Selection.TypeText(Text := form1.Edit1.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//首先创建对象,如果出现异常就作出提示
try
FWord := CreateOleObject('Word.Application');
//WORD程序的执行是否可见,值为False时程序在后台执行
FWord.Visible := False;
except
ShowMessage('创建word对象失败!');
Exit;
end;

//先在打开的Word中创建一个新的页面,然后在其中键入"Hello,"+回车+"World!"
try
FDoc := FWord.Documents.Add;
FWord.Selection.TypeText(Text := 'Hello,');
FWord.Selection.TypeParagraph;
FWord.Selection.TypeText(Text := 'World! ');

except
on e: Exception do
ShowMessage(e.Message);
end;
end;

//在程序关闭时把文件内容保存到当前目录中,并以test.doc命名
//同时关闭WORD程序
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FDoc.SaveAs(ExtractFilePath(application.ExeName) +'test.doc');
FWord.Quit;
FWord := Unassigned;
end;

end.

此外,对OFFICE其他文件的操作都比较类似,不在赘述。通过对WORD文件中更复杂的VBA宏的引用,这个方法还可以完成更复杂的文档操作。

最新文章

  1. Bootstrap <基础三十二>模态框(Modal)插件
  2. JS,Jquery获取各种屏幕的宽度和高度
  3. 使用Ant构建struts2 web工程,自动编译,打包成war
  4. C和指针笔记 3.8 static关键字
  5. FFmpeg Filters Images 参数及效果图
  6. 【BZOJ】1002: [FJOI2007]轮状病毒(DP+规律+高精度)
  7. 个人Android作品开发——FinancePad记账通
  8. switch的case中不能做定义
  9. QtSQL学习笔记(3)- 执行SQL语句
  10. bug:论用例健壮性的重要
  11. oracle数据库表实现主键自增功能
  12. JavaScript进阶(三)常见工具(校验、通用)
  13. Salesforce的对象关系
  14. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证
  15. nginx rewrite重写
  16. 51Nod1634 刚体图 动态规划 容斥原理 排列组合
  17. JavaScript快速入门-ECMAScript本地对象(Date)
  18. CSS规范 - 优化方案--(来自网易)
  19. 一个简单的日志函数C++
  20. ExcelConvert

热门文章

  1. 【BZOJ 1031】[JSOI2007]字符加密Cipher
  2. Netty多线程处理机制
  3. 2017年iOS应用将强制使用HTTPS安全加密-b
  4. php+mysql分页类的入门实例
  5. js中replace的正则替换
  6. HDU1411+四面体的体积
  7. 2013 Multi-University Training Contest 5 k-th point
  8. Servlet课程0426(十)Servlet如何删除cookie
  9. HeadFirst设计模式之装饰者模式
  10. 从iPhone4、iPhone5、iPhone6看手机外壳加工工艺进化史