procedure Tfrmdyqk1.BitBtn2Click(Sender: TObject);
用一个Opendialog控件!
begin
  if Opendialog1.execute then
     begin
        OleContainer1.CreateObjectFromFile(OpenDialog1.FileName,false);
        Olecontainer1.Doverb(ovShow);
       // OleContainer1.Run;
     end;
end;

解决方案 »

  1.   

    Demos\ActiveX\Oleauto\Word8
    现成的例子,自己看吧。
      

  2.   

    你可以在程序中激活word,也可以用olecontainer!
    我说第一种巴:
    在form上放一个TWordApplication,TWordDocument
    WordApplication1.Visible:=True;
    WordDocument1.ConnectTo(WordApplication1.ActiveDocument);//喆是连接当前文件!
      

  3.   

    procedure TForm1.LaunchButtonClick(Sender: TObject);
    begin
      if not Assigned(WordObject) then begin
        WordObject := TWordObject.Create;
        with WordObject do begin
          Caption := 'Delphi is RAD!';
          Visible := True;
          OnQuit := AppQuit;
          OnDocumentChange := AppDocumentChange;
          OnNewDocument := DocNew;
          OnOpenDocument := DocOpen;
          OnCloseDocument := DocClose;
        end;
        LaunchButton.Enabled := False;
        CloseButton.Enabled := True;
        NewDocButton.Enabled := True;
      end;
    end;procedure TForm1.NewDocButtonClick(Sender: TObject);
    begin
      if opendialog1.Execute then
      try
        WordObject.NewDoc(opendialog1.FileName);
      except
        ShowMessage('It seems like somebody killed Word and didn''t tell me about it...');
        if Assigned(WordObject) then begin
          LaunchButton.Enabled := True;
          CloseButton.Enabled := False;
          NewDocButton.Enabled := False;
          TypeTextButton.Enabled := False;
          WordObject.Free;
          WordObject := nil;
        end;
      end;
    end;
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Buttons, Word97, OleServer;type
      TForm1 = class(TForm)
        App: TWordApplication;
        Doc: TWordDocument;
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        SpeedButton5: TSpeedButton;
        odDoc: TOpenDialog;
        SpeedButton6: TSpeedButton;
        procedure SpeedButton1Click(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton3Click(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
        procedure SpeedButton5Click(Sender: TObject);
        procedure SpeedButton6Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.SpeedButton1Click(Sender: TObject);
    begin
      APP.Connect;
      app.Visible := true;
    end;procedure TForm1.SpeedButton2Click(Sender: TObject);
    var  Index,sFile,bFlag:OleVariant;
    begin
      if odDoc.Execute then
      begin
        sFile:=odDoc.FileName;
        bFlag := False;
        App.Documents.Open(sFile,bFlag,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
        index :=1;
        Doc.ConnectTo(App.Documents.Item(index));
      end
      else
      begin
      ///Documents.Add DocumentType:=wdNewBlankDocument
    //    ShowVisualBasicEditor = True
      ///
        app.Documents.Add(EmptyParam,EmptyParam);
      end;
    end;procedure TForm1.SpeedButton3Click(Sender: TObject);
    begin
      Doc.PrintPreview;
    end;procedure TForm1.SpeedButton4Click(Sender: TObject);
    begin
      // Selection.TypeText Text:="uiyuiyuiyuiyuyuyui"
      ///这是我录的插入字符的宏
      // 思想:宏转换在 vb转换要容易些
        app.Selection.TypeText('dfjalfda;fdsajfla');end;procedure TForm1.SpeedButton5Click(Sender: TObject);
    var
      LinkToFile, SaveWithDocument:OleVariant;
    begin
      // Selection.InlineShapes.AddPicture FileName:="F:\新建文件夹 (2)\BLOW4.JPG", _
      //      LinkToFile:=False, SaveWithDocument:=True
      odDoc.FileName :='F:\新建文件夹 (2)\BLOW4.JPG';
      if odDoc.Execute then
      begin
        LinkToFile:=False; SaveWithDocument:=True;
        app.Selection.InlineShapes.AddPicture(odDoc.FileName,LinkToFile,SaveWithDocument,EmptyParam);  end;
      {插入表格也类是 用range 可以控制插入的位置}
    end;procedure TForm1.SpeedButton6Click(Sender: TObject);
    var
       append,FileName, Range, Item, Copies, Pages, PageType , ManualDuplexPrint
       , Collate, Background, PrintToFile , PrintZoomColumn, from,to_ ,
        PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight:OleVariant;begin
    {'
    ' Macro3 Macro
    ' 宏在 2001-7-24 由 yj 录制
    '
        Application.PrintOut FileName:="", Range:=wdPrintRangeOfPages, Item:= _
            wdPrintDocumentContent, Copies:=1, Pages:="11", PageType:=wdPrintAllPages _
            , ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile _
            :=False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
            PrintZoomPaperHeight:=0
    }
      FileName:=''; Range:='wdPrintRangeOfPages'; Item:='wdPrintDocumentContent';
       Copies:=1; Pages:=2; PageType:='wdPrintAllPages';
            ManualDuplexPrint:=False; Collate:=True; Background:=True;        PrintToFile :=False; PrintZoomColumn:=0; PrintZoomRow:=0;
             PrintZoomPaperWidth:=0;
            PrintZoomPaperHeight:=0 ;
            append:=false;
            from:=2;
            to_:=2;
      app.PrintOut(Background,Append , Range, filename, from, to_, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, EmptyParam, ManualDuplexPrint)//, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)  {(Background,EmptyParam,EmptyParam,filename,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,pages,EmptyParam,EmptyParam);}
    end;end.
      

  5.   

    要打开指定的word文档,何须如此麻烦?一个ShellExcute函数即可搞定:  ShellExecute(handle, 'open', 'Winword', PChar(OpenFile),Nil, SW_SHOWNORMAL);  其中OpenFile为指定的word文档!
      另外值得注意的是你的word应用程序的路径若不是默认安装的路径,那么在倒数第二个参数要指定word应用程序路径!