原帖:http://topic.csdn.net/u/20101220/21/fda21ce0-5dec-4eec-aae2-3b52714c4c84.html
(望斑竹把上面的200分还给我)我自己来贴个答案吧,这里实在太冷清,我都2年没用DELPHI了,现在偶尔用一下遇到问题,本想偷懒,看来还是自力更生,希望斑竹把这个分还给我。同时,网上类似例子也没有,但愿以下代码对后人有用:procedure TPrintWord.PrintWords(sqlstr:string);
var
  templateName: OleVariant;
  newTemplate: OleVariant;
  ItemIndex: OleVariant;
  vSelection: wordSelection;
  vBookMark: BookMark;
  vTable: Table;
  CopyTable:Table;
  I : Integer;
  j:integer;
  rend:OleVariant;
   myrange:range;
   rs:tadoquery;
beginCallFormCreate;
  //构造打印模板文件名全路径
templateName := folderName + 'cld4.dot';
newTemplate := False;  try
    wordApp.Connect();
  except
    MessageDlg('您的计算机上还未安装Microsoft Office Word97或更高的版本!', mtError, [mbOK], 0);
    Abort;
  end;  //以指定的模板文件创建新Word文档
  wordApp.Documents.AddOld(templateName, newTemplate);
      vSelection := wordApp.Selection;
      rs:=connect.opentable(sqlstr);
      j:=1;
      ItemIndex:=1;
       WordDocument1.ConnectTo(WordApp.Documents.Item(ItemIndex));
        // 先拷贝整个文档模板
        WordApp.ActiveDocument.Select ;
        WordApp.Selection.Copy;
       while not rs.eof  do
       begin
       frm_wait.ProgressBar1.StepBy(j);
        //取文档中的第1张表
       vTable := wordApp.ActiveDocument.Tables.Item((j-1)*11+1);
       vTable.Cell(1, 2).Range.Text := rs.FieldByName('st_name').Text;
       vTable.Cell(2, 2).Range.Text := rs.FieldByName('class_name').Text;
       ////取文档中的第2张表
        vTable := wordApp.ActiveDocument.Tables.Item((j-1)*11+2);
         vTable.Cell(1, 1).Range.Text := datetostr(date);
       if j<rs.RecordCount  then
       begin  //将光标置于末端,然后粘贴
        worddocument1.Range.InsertAfter(''+#13);
         rend:=worddocument1.Range.End_-1;
         myrange:=WordDocument1.Range(rend,rend);
        myrange.Paste;
       end;
       rs.Next;
       inc(j);
     end;
  wordApp.Visible := true;
  wordApp.WindowState := 1;
  //打印预览
  //wordApp.PrintPreview := CheckBox2.Checked;  //立即打印
 // if CheckBox3.Checked then
 //    wordApp.PrintOutOld;  wordApp.Disconnect();
   frm_wait.Close;
end;
procedure TPrintWord.CallFormCreate();
var
  templateName: String;
  fileStream: TResourceStream;
begin
  //获得应用程序所在的目录
  folderName := ExtractFilePath(Application.ExeName);  if not FileExists(folderName+'template.res') then
     begin
       MessageDlg('错误:找不到模板资源文件template.res!', mtError, [mbOK], 0);
       exit;
     end;  //构造WORD打印模板的文件名全路径
  templateName := folderName + 'cld4.dot';
  //获得资源文件里的“处理单”打印模板
  fileStream := TResourceStream.Create(hInstance, 'cld4', 'WORD');  if not FileExists(templateName) then
    begin
      //拆离文件
      fileStream.SaveToFile(templateName);
      //释放
      fileStream.Free;
    end;end;