Читать «Виртуальная библиотека Delphi» онлайн - страница 36

Unknown

  inc(Nn);

  Sum:=Sum+(T.Count*T.Cena); { итоговая сумма }

  if not DDE1.ExecuteMacro(Tv, false)

   then begin

    MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0);

    exit;

   end;

end;

{ Записываем итоговую сумму }

StrPCopy(Tv,

  '[NextCell][Insert "Итого"][NextCell][NextCell][NextCell]'+

  '[Insert "'+FloatToStr(Sum)+'"]'));

if not DDE1.ExecuteMacro(Tv, false)

  then MessageDlg('Ошибка связи с Microsoft Word.', mtError, [mbOk], 0)

  else MessageDlg('Акт удачно создан. Перейдите в Microsoft Word.',

        mtInformation, [mbOk], 0);

StrDispose(Tv); StrDispose(Ss);

end;

 Для Delphi 2 и выше

=== Cut Пример by Sergey Arkhipov 2:5054/88.10 ===

Пример проверен только на русском Word 7.0! Может, поможет...

unit InWord;

interface

uses

  ... ComCtrls; // Delphi3

  ... OLEAuto;  // Delphi2

[skip]

procedure TPrintForm.MPrintClick(Sender: TObject);

var W: Variant;

    S: String;

begin

  S:=IntToStr(Num);

  try // А вдруг где ошибка :)

    W:=CreateOleObject('Word.Basic');

    // Создаем документ по шаблону MyWordDot

    // с указанием пути если он не в папке шаблонов Word

    W.FileNew(Template:='C:\MyPath\DB\MyWordDot',NewTemplate:=0);

    // Отключение фоновой печати (на LJ5L без этого был пустой лист)

    W.ToolsOptionsPrint(Background:=0);

   // Переходим к закладке Word'a 'Num'

    W.EditGoto('Num'); W.Insert(S);

   //Сохранение

    W.FileSaveAs('C:\MayPath\Reports\MyReport')

    W.FilePrint(NumCopies:='2'); // Печать 2-х копий

  finally

    W.ToolsOptionsPrint(Background:=1);

    W:=UnAssigned;

  end;

end;

{.....}

 === Cut Конец примера ===

Спасибо Сергею :) И еще, как определить установлен ли на компьютере Word, запустить его и загрузить в него текст из программы?

Пример:

var

MsWord: Variant;

...

try

// Если Word уже запущен

MsWord := GetActiveOleObject('Word.Application');

// Взять ссылку на запущенный OLE объект

except

  try

  // Word не запущен, запустить

  MsWord := CreateOleObject('Word.Application');

  // Создать ссылку на зарегистрированный OLE объект

  MsWord.Visible := True;

   except

    ShowMessage('Не могу запустить Microsoft Word');

    Exit;

   end;

  end;

end;

...

MSWord.Documents.Add; // Создать новый документ

MsWord.Selection.Font.Bold := True; // Установить жирный шрифт

MsWord.Selection.Font.Size := 12; // установить 12 кегль

MsWord.Selection.TypeText('Текст');

По командам OLE Automation сервера см. help по Microsoft Word Visual Basic.