我先写点吧,感觉效果不大好unit WordControl;interfaceuses
  Classes, SysUtils, Variants, Word2000, Office2000;type
  TWordControl = class
  private
    FCurrentDocIndex: Integer;
    FCurrentDocName: String;
    FDocCount: Integer;
    FDocument: TWordDocument;
  protected
    FWordApplication: TWordApplication;
    FWordDocument: TWordDocument;
  public
    FDocsStyle: array of Char;
          //文档的打开类型  L :由对象打开  R: 由应用程序打开    constructor Create(shown: Boolean = True);   //是否显式调用,默认为是
    destructor Destroy; override;    function GetDocData(): OleVariant;
    function OpenDoc(ADocName:WideString): Integer; overload;     //打开外部文件
    function OpenDoc(ADocName:WideString ;ADocData: OleVariant): Integer; overload; //打开数据库文件
    function SaveDocToDisk(ADocName: WideString): Integer;
    function ReplaceTextToDoc(AdocName,AOldText,ANewText:String): Boolean;
    procedure PrintDoc();     //打印当前活动文档
    procedure PrintViewDoc();     //打印预览当前活动文档
    procedure RefreshDoc();       //刷新文档
  published
    property CurrentDoc: OleVariant read GetDocData;              //获得当前文档的内容
    property CurrentDocIndex: Integer read FCurrentDocIndex;      //当前文档索引
    property CurrentDocName: String read FCurrentDocName;         //当前文档名称
    property DocCount: Integer read FDocCount;                    //当前打开的文档数目
    property Document: TWordDocument read FDocument;
            //当前的文档对象,此外是为方便实际应用中进一步的对文档的控制要求。
    //property DocsStyle: array of char read FDocsStyle;
  end;implementation{ TWordControl }constructor TWordControl.Create(shown: Boolean);
//var
//  Template, NewTemplate, ItemIndex: OleVariant;
begin
  inherited Create;
  FWordApplication := TWordApplication.Create(nil);
  FWordDocument := TWordDocument.Create(nil);
 // FWordApplication.AutoQuit := True;
  FWordApplication.Visible := shown;
  FDocCount := 0;
end;destructor TWordControl.Destroy;
begin
  if Assigned(FWordApplication) then
    FWordApplication.Free;
  if Assigned(FWordDocument) then
    FWordDocument.Free;
  inherited;
end;function TWordControl.GetDocData: OleVariant;
begin
  Result := Variant(FWordDocument.Content as IDispatch);
end;function TWordControl.OpenDoc(ADocName: WideString): Integer;
var
  FileName,i : OleVariant;
begin
  FileName := ADocName;
  FDocCount := FDocCount + 1;
  i := FDocCount;
  FWordApplication.Documents.Open(FileName,EmptyParam,EmptyParam,
            EmptyParam,EmptyParam,EmptyParam,EmptyParam,
            EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
  FWordDocument.ConnectTo(FWordApplication.Documents.Item(i));
  Result := 0;
end;function TWordControl.OpenDoc(ADocName: WideString;
  ADocData: OleVariant): Integer;
begin
 // FWordDocument.Content := (ADocData as IDispatch);
  Result := 0;
end;procedure TWordControl.PrintDoc();
var
  i: OleVariant;
begin
  FWordDocument.PrintOut;
end;procedure TWordControl.PrintViewDoc();
begin
  FWordDocument.PrintPreview;
end;procedure TWordControl.RefreshDoc;
begin
  FWordDocument.Reload;
{  i := FDocCount;
  FWordDocument.Disconnect;
  FWordDocument.ConnectTo(FWordApplication.Documents.Item(i)); }
end;function TWordControl.ReplaceTextToDoc(AdocName, AOldText,
  ANewText: String): Boolean;
var
  FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
  MatchAllWordForms, _Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
begin
  FindText := AOldText;
  MatchCase := False;
  MatchWholeWord := False;
  MatchWildcards := False;
  MatchSoundsLike := False;
  MatchAllWordForms := False;
  _Forward := True;
  Wrap := wdFindContinue;
  Format := False;
  ReplaceWith := ANewText;
  Replace := wdReplaceAll;  Result := FWordDocument.Content.Find.Execute(FindText, MatchCase, MatchWholeWord,
        MatchWildcards, MatchSoundsLike, MatchAllWordForms,
        _Forward, Wrap, Format, ReplaceWith,
        Replace, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;function TWordControl.SaveDocToDisk(ADocName: WideString): Integer;
var
  SaveChanges: OleVariant;
  FileName: OleVariant;
begin
  SaveChanges := wdSaveChanges;
  FileName := ADocName;
  //FWordApplication.Quit(SaveChanges);
  FWordDocument.SaveAs(FileName);
  FWordDocument.Close(SaveChanges);
  //FWordApplication.Visible := False;
  //FDocCount := FDocCount - 1;
  Result := 0;
end;end.