Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с документами WORD [D7, Win2k]


Scorpio ©   (2005-12-16 16:58:00) 

Подскажите ктонибудьЮ есть такая проблема :
Создаю шаблон в Word-е, его открываю, затем, как мне вставаить в определенном месте свою строку, а то я только нашел одну команду INSERT, но она вставляет только новую, а мне нужно в определенное место, такое возможно или нет ???


marina-n   (2005-12-23 16:43:00) [1]

Аналогичная проблема, но уже в Экселе. Делаю метку на первой строке моей таблицы, чтобы потом вставить вместо нее число. А вот как вставить значение на следующей строке, чтобы метку не делать, а то я замучилась (в таблице 10 строк и 3 столбца). Как бы сделать полегче?


evvcom   (2005-12-23 14:52:00) [2]

сделай запись макроса в ворде и посмотри текст полученного макроса


john_mag   (2005-12-23 11:35:00) [3]

Предлагаю следующий вариант: используй функцию GoTo_

procedure TForm1.Selection_GoTo(What,Which,Count,Name: OleVariant);
begin
if Count<>0 then WordApplication1.Selection.GoTo_(What,Which,Count,Name);
end;
Варианты:
в начало
//-----------------------------------------------------------------
Selection_GoTo(wdGoToPage,wdGoToPrevious,PageAllCount,'');
//-----------------------------------------------------------------
в нужное место
Selection_GoTo(wdGoToPage,wdGoToNext,PageAllCount,'');

для начала отправь курсор в самое начало, а затем на 30 строку те PageAllCount:= 30;


Barsky   (2005-12-23 11:22:00) [4]

Можно через текстовые поля


umbra   (2005-12-23 10:43:00) [5]


> как мне точно опуститься на эту 30 строку

найти 29-й символ конца строки и после него вставить то, что надо


ищущий ответ   (2005-12-23 10:35:00) [6]

Почитай ссылочку www.kornjakov.ru/stat.htm#s6.


scorpio   (2005-12-21 12:32:00) [7]

ну так это позиция для по координате Х,
А мне нужно для координаты Y.
Т.е. чтобы это была строго 30 строка, а не символ.

а тело программы такое:

var xls, app, template : variant;
   wd, direction, nom : OleVariant;
   nomer : integer;

begin

    WordApplication1.Documents.Add(EmptyParam,EmptyParam);

    WordApplication1.Selection.InsertAfter('ИНФОРМАЦИОННО - АНАЛИТИЧЕСКИЙ КОНТРОЛЬНЫЙ ЦЕНТР+#13);
    WordApplication1.Selection.InsertAfter(''+#13);

    WordFont1.ConnectTo(WordApplication1.Selection.Font);
    WordParagraphFormat1.ConnectTo(WordApplication1.Selection.ParagraphFormat);
    WordFont1.Size := 12;
    WordFont1.Name := 'Arial';
    WordParagraphFormat1.Alignment := wdAlignParagraphCenter;

    direction := wdCollapseEnd;
    WordApplication1.Selection.Collapse(direction);
    WordApplication1.Selection.InsertAfter('3300-MD, '+#13);
    WordApplication1.Selection.InsertAfter(#13);
     WordFont1.ConnectTo(WordApplication1.Selection.Font);
    WordParagraphFormat1.ConnectTo(WordApplication1.Selection.ParagraphFormat);
    WordFont1.Bold := 1;
    WordFont1.Size := 8;
    WordFont1.Name := 'Arial';
    WordParagraphFormat1.Alignment := wdAlignParagraphCenter;
    WordApplication1.Selection.Collapse(direction);

    WordFont1.Bold := 1;
    WordFont1.Size := 8;
    WordFont1.Name := 'Arial';
    WordApplication1.Selection.InsertAfter('Серия В №    ');
    WordApplication1.Selection.Collapse(direction);

    WordFont1.Bold := 1;
    WordFont1.Size := 8;
    WordFont1.Name := 'Courier New';
    nom := '040000';
    WordApplication1.Selection.InsertAfter(nom);
    WordApplication1.Selection.Collapse(direction);

    WordFont1.Bold := 0;
    WordFont1.Size := 10;
    WordFont1.Name := 'Arial';
    nom := '040000';
    WordApplication1.Selection.InsertAfter('                                  "____"_____________200__г.'+#13 );
    WordApplication1.Selection.InsertAfter(#13);
    WordApplication1.Selection.InsertAfter(#13);
    WordApplication1.Selection.InsertAfter(#13);
    WordApplication1.Selection.InsertAfter(#13);
    WordApplication1.Selection.Collapse(direction);


Тут вставляется переменная с текстом, сколькот строк будет - НЕИЗВЕСТНО
Потом мне нужног строго опуститься на 30 строку и вставить данные


    WordFont1.Bold := 1;
    WordFont1.Size := 8;
    WordFont1.Name := 'Courier New';
    app := ;
    WordApplication1.Selection.InsertAfter('Начальник ');
    WordApplication1.Selection.Collapse(direction);

    WordApplication1.PrintOut;

  Close;
end;


Вот и вопрос, как мне точно опуститься на эту 30 строку ???


umbra   (2005-12-21 11:32:00) [8]

Здесь Word - приложение ворд, start - позиция, после которой нужно вставить текст

var
 myrange: variant;
{................................}

 myrange := Word.Documents[1].Range(start, start);
 myrange.InsertAfter('вставленный текст');
{..........................}
 myrange := unassigned;


Scorpio   (2005-12-21 10:13:00) [9]

Так вот меня и интересует как поместить курсор в нужное место ???
И как это сделать ч/з закладки ??
Дайте плиз пример


YurikGL   (2005-12-20 21:39:00) [10]


> Сначала надо курсор установить в нужное место

Это можно сделать через закладки...


umbra   (2005-12-20 18:24:00) [11]

Сначала надо курсор установить в нужное место


Scorpio   (2005-12-20 17:00:00) [12]

Этот InsertAfter используется для вставки текста :

WordApplication1.Selection.InsertAfter('ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЙ КОНТРОЛЬНЫЙ ЦЕНТР'+#13);

А где здесь указать хотябы, в какую строчку вставить, а еще мне и позиция нужна, а то у меня 2 последние строки долны находиться в определенном месте, независимо от того, сколько было строк до этого.


Scorpio   (2005-12-20 16:59:00) [13]

Этот InsertAfter используется для вставки текста :

WordApplication1.Selection.InsertAfter('ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЙ КОНТРОЛЬНЫЙ ЦЕНТР'+#13);

А где здесь указать хотябы, в какую строчку вставить, а еще мне и позиция нужна, а то у меня 2 последние строки долны находиться в определенном месте, независимо от того, сколько было строк до этого.


umbra   (2005-12-16 18:12:00) [14]

см. метод InsertAfter в справке по VBA для Word


Наверх

Титульная страница Поиск, карта сайта Написать письмо