Консультация № 161385
25.02.2009, 16:07
0.00 руб.
0 2 1
Добрый день!

У меня такая ситуация: я из Delphi вставляю таблицу в документ MS Word, а затем пытаюсь дописать текст перед ней, но текст вставляется не ПЕРЕД таблицей, а в ее 1 ячейку. А как передвинуть таблицу, я не знаю...
Код примерно такой:

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

WordApp.Visible := False;

NewDoc := WordApp.Documents.Add;

iCols := AGrid.ColCount;
iRows := AGrid.RowCount;

WordTable := NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);

for iGridRows := 1 to iRows do
for jGridCols := 1 to iCols do
WordTable.Cell(iGridRows, jGridCols).Range.Text :=
AGrid.Cells[jGridCols - 1, iGridRows - 1];

NewRange := NewDoc.Range;
NewRange.InsertBefore('text1');
NewRange.InsertAfter('text2');

WordApp.ActiveDocument.SaveAs(AFileName);

Обсуждение

Неизвестный
25.02.2009, 16:36
общий
это ответ
Здравствуйте, Atamansha!
Во-первых надо создать место для вставки текста.
Т.е.
...
NewDoc := WordApp.Documents.Add;
WordApp.Selection.TypeParagraph;
WordApp.Selection.TypeParagraph;
{вставили 2 параграфа}
iCols := AGrid.ColCount;
...

А затем чтобы перейти из таблицы в текст перед ней обычно выделяется первая ячейка:
WordTable.Cell(1,1).Select;
и переходим на строку вверх:
WordApp.Selection.MoveUp(wdline, 1, wdMove);
или в начало документа:
WordApp.Selection.HomeKey(wdStory, wdMove);

Удачи.
Неизвестный
26.02.2009, 08:05
общий
Спасибо за совет! Очень помогли.
Форма ответа