Вставка символов в Word и Exel

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
alligator
Сообщения: 5
Зарегистрирован: 26 июн 2004, 01:30

Приветствую!
Как сделать так, чтобы можно было вносить изменения или всавки цифр, слов в уже готовые документы Word и
Exel. Т.е. xoчу нажатием определённых кнопок в основном окне созданной проги, изменять и вставлять символы
в двух документах (Word и Exel), которые уже давно созданны и активно используются на компе.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Надо в своей программе использовать компоненты, нет под руками Delphi... Что-то типа TWordApplication, TWordDocument... Далее читать справку (обязательно! ;) ), искать методы CreateDocument, Open. Ближе к понедельнику скажу поточнее ;)
Изображение
RoKon
Сообщения: 82
Зарегистрирован: 27 мар 2005, 12:24
Откуда: Saransk City
Контактная информация:

Очень удобно работать с закладками и таблицами в готовых шаблонах. Указываешь либо имя закладки либо "координаты" нужной ячейки (№таблицы, №строки, №столбца) и пишешь туда свое значение. В конечном итоге все завязывается на 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... не используются, ...

Код: Выделить всё

uses ComObj, ActiveX, Windows, Variants;
...
The trurh is out there...
Ответить