Очень удобно работать с закладками и таблицами в готовых шаблонах. Указываешь либо имя закладки либо "координаты" нужной ячейки (№таблицы, №строки, №столбца) и пишешь туда свое значение. В конечном итоге все завязывается на VBA, все методы от туда.
Код: Выделить всё
// Открывает указанный документ
procedure TWordDoc.OpenDocuments(AFileName, AConfirmConversions, AReadOnly, AAddToRecentFiles,
APasswordDocument, APasswordTemplate, ARevert,
AWritePasswordDocument, AWritePasswordTemplate : OleVariant;
AFormat : WdOpenFormat; AEncoding, AVisible : OleVariant);
{***
AFileName (!) - имя документа (с путями);
AConfirmConversions - True - показывает окно диалога, если документ не Microsoft Word-формата
- False - не показывает;
AReadOnly - True - открывает документ только для чтения
False - открывает документ для чтения/записи;
AAddToRecentFiles - True - добавляет документ в список последних использованных документов
False - не добавляет;
APasswordDocument - пароль для открываемого документа;
APasswordTemplate - пароль для открываемого шаблона;
ARevert - если открывается уже открытый файл, то
True - отменяет все уже сделанные изменения в открытом документе и переоткрывает его
False - делает активным уже открытый документ;
AWritePasswordDocument - пароль для сохранения изменений в документе;
AWritePasswordTemplate - пароль для сохранения изменений в шаблоне;
AFormat - открывает документ в одном из форматов (default=wdOpenFormatAuto);
AEncoding - код кодирования документа (кодовая страница или набор символов)
Constants for MsoEncoding (default=кодовой странице системы);
AVisible - True - открывает документ как видимый (default)
False - открывает документ как скрытый;
***}
begin
FDoc.Documents.Open(FileName:=AFileName, ConfirmConversions:=AConfirmConversions,
ReadOnly:=AReadOnly, AddToRecentFiles:=AAddToRecentFiles,
PasswordDocument:=APasswordDocument, PasswordTemplate:=APasswordTemplate,
Revert:=ARevert, WritePasswordDocument:=AWritePasswordDocument,
WritePasswordTemplate:=AWritePasswordTemplate, Format:=AFormat,
Encoding:=AEncoding, Visible:=AVisible);
end;
Код: Выделить всё
// Запись значения в ячейку таблицы
procedure TWordDoc.SetCells(ATable, ARow, ACol : Integer; Value: WideString);
begin
FDoc.ActiveDocument.Tables.Item(ATable).Cell(ARow,ACol).Range.Text:=Value;
end;
Код: Выделить всё
// Запись значения в закладку
procedure TWordDoc.SetBookmark(AName : string; AValue : WideString);
begin
FDoc.Selection.GoTo(What:=wdGoToBookmark, Name:=AName);
FDoc.Selection.TypeText(Text:=AValue);
end;
Код: Выделить всё
procedure TWordDoc.DeleteRow(ATable, ARow : integer);
begin
FDoc.ActiveDocument.Tables.Item(ATable).Rows.Item(ARow).Delete;
end;
Ааа, ну конечно предварительно надо создать объект
Код: Выделить всё
type
TWordDoc=class(TObject)
private
FDoc : variant;
...
Код: Выделить всё
// Создание приложения-сервера Word
constructor TWordDoc.Create;
var iuUnknown : IUnknown;
hrResult : HResult;
begin
hrResult:=GetActiveObject(ProgIDToClassID('Word.Application'),nil,iuUnknown);
if (hrResult=MK_E_UNAVAILABLE)
then FDoc:=CreateOleObject('Word.Application')
else FDoc:=GetActiveOleObject('Word.Application');
end;
// Уничтожение приложения-сервера Word
destructor TWordDoc.Destroy;
begin
inherited Destroy;
end;
Компоненты TWordApplication, TWordDocument... не используются, ...
...