
26.05.2008, 13:34
|
Модератор
|
|
Регистрация: 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;
Надергал кода из проекта.
Напрямую работать, конечно, не будет, но понять что-то можно.
|