Показать сообщение отдельно
  #4  
Старый 26.05.2008, 13:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Учись. Всю жизнь за тебя никто работать не будет.

Код:
var
  WordObj: Variant;
  WordDoc: Variant;
begin
  try
    WordObj := GetActiveOleObject('Word.Application');
  except
    try
      WordObj := CreateOleObject('Word.Application');
    except
      on E: Exception do
        begin
          MessageDlg('Ошибка открытия MS Word.'#13#10 + E.Message, mtError, [mbOk], 0);
          Exit;
        end;
    end;
  end;

  try
    try
      WordDoc := WordApp.Documents.Add(AFileName, false, true);
      if WordApp.Visible then
        for I := 1 to WordDoc.Windows.Count do
          WordDoc.Windows.Item(I).WindowState := wdWindowStateMinimize;
      for I := 0 to OracleDataModule.oqGetRepData.Fields.Count - 1 do
            try
              WordDoc.ActiveWindow.Selection.goto(What := -1,
                Name := OracleDataModule.oqGetRepData.Fields[i].FieldName);
              WordDoc.ActiveWindow.Selection.TypeText(Buf);
            except
              Continue;
            end;

      // Сохранить документ с новым именем
      with OracleDataModule.oqMain do
        if MakeRepFolder(FieldByName('First_Name').AsString, FieldByName('Middle_Name').AsString, FieldByName('Last_Name').AsString, FieldByName('R_UID').AsString, Dir) then
          try
            NewFileName := ChangeFileExt(IncludeTrailingPathDelimiter(Dir) + ExtractFileName(AFileName), '.doc');
            WordApp.ActiveDocument.SaveAs(NewFileName);
          except
            on E: Exception do
              MessageDlg('Ошибка сохранения анкеты.'#13#10 + E.Message, mtError, [mbOK], 0);
          end;

      // Показать Word
      if FWorkPlaceOptions.PrintPreview then
      else
        WordDoc.PrintOut;
      Application.ProcessMessages;
    finally
      WordDoc := Unassigned;
    end;
  except
    on E: Exception do
      MessageDlg('Ошибка печати документа.'#13#10 + E.message, mtError, [mbOk], 0);
  end;
end;

Надергал кода из проекта.
Напрямую работать, конечно, не будет, но понять что-то можно.
Ответить с цитированием