FAQ VCL
Работа с MS Office\Word

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как добавить строку в середину таблицы?

uses
  {...,} ActiveX, ComObj;

var
  W: OleVariant; // Объект Word

procedure TForm1.FormCreate(Sender: TObject);
begin
   W := CreateOleObject( 'Word.Application' );
   W.Documents.Open( 'c:\путь к файлу\имя файла.doc' );
   W.Visible := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   W.Quit;
   W := Unassigned;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Table: OleVariant;
begin
   // Курсор ввода должен находится в ячейке таблицы
   Table := W.Selection.Tables.Item( 1 );
   Table.Rows.Item( 1 ).Select; // Вставляем перед первой строкой
   W.Selection.InsertRows( 5 ); // Вставляем 5 строк
   // Или так (если мы знаем порядковый номер таблицы)
   // _Table - порядковый номер таблицы
   // _Position - строка, перед которой необходимо вставить новую
   // _Сount - количество вставляемых строк
   // W.ActiveDocument.Tables.Item( _Table ).Rows.Item( _Position ).Select;
   // W.Selection.InsertRows( _Сount );
end;

// Для вставки одной строки можно использовать также и метод Add
// коллекции Rows, но с параметром, в качестве которого выступает
// ссылка на строку, перед которой необходимо вставить новую.
procedure TForm1.Button2Click(Sender: TObject);
var
  Table: OleVariant;
  Row: OleVariant;
begin
   // Курсор ввода должен находится в ячейке таблицы
   Table := W.Selection.Tables.Item( 1 );
   Row := Table.Rows.Item( 1 ); // Вставляем перед первой строкой
   Table.Rows.Add( Row );
   // Или так (если мы знаем порядковый номер таблицы)
   // _Table - порядковый номер таблицы
   // _Position -  строка, перед которой необходимо вставить новую
   // Получаем ссылку на строку
   // Row := W.ActiveDocument.Tables.Item( _Table ).Rows.Item( _Position );
   // Вставляем новую строку
   // W.ActiveDocument.Tables.Item( _Table ).Rows.Add( Row );
end;


Как узнать уровень вложенности таблицы?

uses
  {...,} ActiveX, ComObj;

var
  W: OleVariant; // Объект Word

procedure TForm1.FormCreate(Sender: TObject);
begin
   W := CreateOleObject( 'Word.Application' );
   W.Documents.Open( 'c:\путь к файлу\имя файла.doc' );
   W.Visible := True;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   W.Quit;
   W := Unassigned;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Table: OleVariant;
begin
   // Курсор ввода должен находится в ячейке таблицы
   Table := W.Selection.Tables.Item( 1 );
   ShowMessage( Table.NestingLevel );
end;


Как распечатать текущую страницу открытого документа?

uses
  {..., Word_TLB,} ActiveX, ComObj;

// Constants for enum WdPrintOutRange
type
  WdPrintOutRange = TOleEnum;
const
  wdPrintAllDocument = $00000000;
  wdPrintSelection = $00000001;
  wdPrintCurrentPage = $00000002;
  wdPrintFromTo = $00000003;
  wdPrintRangeOfPages = $00000004;

// Constants for enum WdPrintOutItem
type
  WdPrintOutItem = TOleEnum;
const
  wdPrintDocumentContent = $00000000;
  wdPrintProperties = $00000001;
  wdPrintComments = $00000002;
  wdPrintStyles = $00000003;
  wdPrintAutoTextEntries = $00000004;
  wdPrintKeyAssignments = $00000005;
  wdPrintEnvelope = $00000006;

// Constants for enum WdPrintOutPages
type
  WdPrintOutPages = TOleEnum;
const
  wdPrintAllPages = $00000000;
  wdPrintOddPagesOnly = $00000001;
  wdPrintEvenPagesOnly = $00000002;

var
  W: OleVariant; // Объект Word

procedure TForm1.FormCreate(Sender: TObject);
begin
   W := CreateOleObject( 'Word.Application' );
   W.Documents.Open( 'c:\путь к файлу\имя файла.doc' );
   W.Visible := True;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   W.Quit;
   W := Unassigned;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   W.PrintOut(Range := wdPrintCurrentPage, Item := wdPrintDocumentContent,
      Copies := 1, PageType := wdPrintAllPages, ManualDuplexPrint := False,
      Collate := True, Background := True, PrintToFile := False,
      PrintZoomColumn := 0, PrintZoomRow := 0, PrintZoomPaperWidth := 0,
      PrintZoomPaperHeight := 0, Append := False);
end;


Как создать гиперссылку в Word?

uses
  {...,} ComObj;

var
  W: OleVariant;

procedure TForm1.Button1Click(Sender: TObject);
begin
   W := CreateOleObject('Word.Application');
   W.Documents.Add;

   W.ActiveDocument.Hyperlinks.Add(Anchor := W.Selection.Range,
      Address := 'http://decoding.dax.ru', SubAddress := '',
      ScreenTip := 'Мой'#10'сайт!', TextToDisplay := 'Decoding');

   W.Visible := True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   if not VarIsEmpty(W) then
   begin
      W.Quit;
      W := Unassigned;
   end;
end;

При использовании материала - ссылка на сайт обязательна