Имя: Пароль:
1C
 
Работа с Word - удалить строки
0 Sergey SP
 
03.06.10
08:47
Добрый день!

Подскажите как можно удалить строки в шаблоне Word.
Т.е. есть заранее известные строки которые нужно удалить, к примеру 20 и 21, пытаюсь так, но выдаёт ошибку:

Word = CreateObject("Word.Application");
Word.Documents.add(ИмяФайла);
Text = Word.Selection;
Text.MoveDown();двигаюсь на n строк вниз, повторяю n раз, можно быстрее? при передачи второго параметра - выдает ошибку
Text.HomeKey();встаю на начало строки
Text.MoveDown();еще на одну строку вниз
Text.EndKey();и до конца
Text.Delete(1, 1);удаляю

Т.е. загвоздка в том чтобы выделить, не могу понять где идет просто переход к строке, а где переход с выделением, если кто поделиться рабочим примером будет вообще хорошо!
1 Alpen906
 
03.06.10
09:08
Если Стр.НомерСтроки = Ссылка.Дольщики.Количество() Тогда
Приложение.Selection.Find.Execute("<Дольщик>");
//удалим все незаполненнные строки в подвале
wdStory = 6; wdExtend    = 1;
wdCharacter = 1; Count    = 1;
Приложение.Selection.EndKey(wdStory, wdExtend);
Приложение.Selection.Delete(wdCharacter, Count);
КонецЕсли;
2 smaharbA
 
03.06.10
09:13
за селекты руки обрывать
3 Sergey SP
 
03.06.10
09:14
Насколько я понял ищется слово <Дольщик> и эти строки удаляются

а как мне встать на определенную строку выделить её и последующую? вот в чем загвоздка у меня...
Искать по слову я не могу, там обычный текст и таких слов может быть много...
4 Sergey SP
 
03.06.10
09:15
(2) ну так подскажите правильный вариант, с удовольствием выслушаю!
5 NikVars
 
03.06.10
10:21
(4)
Fnd.Execute("ХочуУдалитьЭто"+РазделительСтрок,,,,,,,,,"",2);
Или
Fnd.Execute("ХочуУдалитьЭто"+Симв(13),,,,,,,,,"",2);
Как-то так... Делал когда-то, когда удалял строки...
Идея - заменить символ конца строки на пустую строку.
6 smaharbA
 
03.06.10
10:22
в ворде нету строк !
7 NikVars
 
03.06.10
10:23
А мне пофиг, что у него там есть.
Один из вариантов в (5) подойдет.
8 NikVars
 
03.06.10
10:24
Правда удаляя строку(вернее сивол конца абзаца), может гнать вместо это на предыдущий абзац мусор... квадратики...
9 NikVars
 
03.06.10
10:25
Но и это исправимо.
10 NikVars
 
03.06.10
10:26
+(5) Уточню, чтобы не было двусмысленности. Это в случе, когда абзац=видимой строке (без переползаций абзаца на 2-ю, 3-ю строку)
11 smaharbA
 
03.06.10
10:26
ищем слово в нем берем .Paragraphs(1).Range.Delete() все
12 smaharbA
 
03.06.10
10:50
примерно выглядит так (но не забываем в ворде строка==параграф)

Диапазон = Док.Range;
Поиск = Диапазон.Find;
Поиск.Execute ("Вася");
Если Поиск.Found=-1 Тогда
       Поиск.Parent.Paragraphs(1).Range.Delete();
КонецЕсли;

если по сабжу то будет просто

Док.Paragraphs(21).Range.Delete();
Док.Paragraphs(20).Range.Delete();

(в обратном порядке)

Если все же надо удалить видимые строки при текущем форматировании то тогда конечно только мове и селектион
13 Sergey SP
 
03.06.10
11:11
Word = CreateObject("Word.Application");
Word.Documents.add(ИмяФайла);    
Word.Paragraphs(21).Range.Delete();

выдаёт ошибку Поле агрегатного объекта не обнаружено (Paragraphs)
что не так?
14 smaharbA
 
03.06.10
12:25
(13) отличие от (12) не замечаешь ?
15 Sergey SP
 
03.06.10
12:31
а можно без шарад?
ну не знаю я что за тип переменной Док в примере (12)
16 smaharbA
 
03.06.10
12:33
Ворд = СоздатьОбъект("Word.Application");
Док = Ворд.Open(Файл); // ну или если новый по шаблону - Док = Ворд.Add(Файл);
17 smaharbA
 
03.06.10
12:34
а так любителей общения с application надо расстреливать на месте
18 Sergey SP
 
03.06.10
12:43
Спасибо, заработало!
19 Иду
 
03.06.10
12:56
(17) (всхлипывая) За чьто, мастер?
20 smaharbA
 
03.06.10
12:57
(19) ))) за уши