使用CreateOleObject方法對Word文檔操作具有先天所具備的優(yōu)勢,與delphi所提供的那些控件方式的訪問相比,CreateOleObject方法距離WORD核心的操作“更近”,因為它直接使用OFFICE所提供的VBA語言對WORD文檔的操作進行編程。
以下是我在本機上所做的實驗,機器軟件配置如下:
Windows xp+delphi7.0+OFFICE 2003
這個程序很簡單,在頁面上放置了一個edit和一個button,每單擊一次按鈕,就會自動把edit中的內(nèi)容添加在后臺中的word文檔中,程序關(guān)閉時文件自動保存在當(dāng)前程序的主目錄中。
unit main;
interface
//如果要使用CreateOleObject的辦法對WORD文檔進行操作,應(yīng)該在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
//首先創(chuàng)建對象,如果出現(xiàn)異常就作出提示
try
FWord := CreateOleObject('Word.application');
//WORD程序的執(zhí)行是否可見,值為False時程序在后臺執(zhí)行
FWord.Visible := False;
except
ShowMessage('創(chuàng)建word對象失敗!');
Exit;
end;
//先在打開的Word中創(chuàng)建一個新的頁面,然后在其中鍵入"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;
//在程序關(guān)閉時把文件內(nèi)容保存到當(dāng)前目錄中,并以test.doc命名
//同時關(guān)閉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文件中更復(fù)雜的VBA宏的引用,這個方法還可以完成更復(fù)雜的文檔操作。
|
新聞熱點
疑難解答
圖片精選