![]() |
![]() |
![]() |
|
Работа с 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) ))) за уши
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |