Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
1

Удалить всё, кроме параграфов, которые содержат введённый текст

24.05.2014, 14:40. Показов 1417. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Подскажите, пожалуйста:
Есть макрос, который удаляет параграфы, содержащие определённый текст
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Sub DeleteParWith()
Dim aDoc As Document, nDoc As Document
Application.ScreenUpdating = False
Set aDoc = ActiveDocument
Dim Pattern As String
Pattern = InputBox("Введите строку")
aDoc.Activate
With Selection
    .HomeKey Unit:=wdStory
    .Find.ClearFormatting
    With .Find
        .Text = Pattern
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchControl = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
End With
Do
    With Selection
        If Not .Find.Execute Then Exit Do
        .StartOf Unit:=wdParagraph
        .EndOf Unit:=wdParagraph, Extend:=wdExtend
        .Delete
        .EndKey Unit:=wdLine
    End With
Loop
Application.ScreenUpdating = True
End Sub
Не пойму как его модифицировать, чтобы он оставлял только те, параграфы, которые содержат введённый текст, а остальные удалял. Подскажите, пожалуйста.

С уважением.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2014, 14:40
Ответы с готовыми решениями:

Удалить все файлы, которые содержат в ячейке А1 указанный текст
Подскажите Пожалуйста! Есть много файлов ексель нужно удалить все файлы которые содержат в ячейке...

В данном тексте (любой введенный текст) удалить все пробелы
В с-шарп новичок Помогите решить задачку : В данном тексте (любой введенный текст) удалить все...

Изъять все слова, которые содержат текст
Доброго времени суток уважаемые форумчане! Выручайте, завтра последний зачет, а нужно еще сделать...

Удалить все строки матрицы, которые содержат нули
Дана квадратная матрица целых числе N*N(N-константа), заданная случайным образом, числами из...

7
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.05.2014, 18:10 2
Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

SysUnit,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Option Compare Text
 
Sub KeepParWith()
Dim i As Long, Pattern As String
Pattern = "*" & InputBox("Введите строку") & "*"
Application.ScreenUpdating = False
With ActiveDocument
  For i = .Paragraphs.Count To 1 Step -1
    If Not .Paragraphs(i).Range.Text Like Pattern Then
      .Paragraphs(i).Range.Delete
    End If
  Next
End With
Application.ScreenUpdating = True
End Sub
1
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
24.05.2014, 18:17 3
Казанский, а если введённая строка будет содержать символы, имеющие особенное значение для like?
2
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.05.2014, 18:54 4
ikki, я думал об этом, но... может, сойдет.
Кстати, у range.find тоже специальные символы есть: ^p, ^l и т.д.

А у тебя високосные года неправильно определяются
1
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
24.05.2014, 19:10 5
данунафиг?
1
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
24.05.2014, 21:26  [ТС] 6
Казанский, спасибо за ответ!
А правильно я понимаю, что если после If удалить not, то макрос будет удалять параграф, содержащий введённые символы?
ikki, спасибо за ответ!
Цитата Сообщение от ikki Посмотреть сообщение
если введённая строка будет содержать символы, имеющие особенное значение для like
Вы могли бы пояснить, что это такое like?

P.S. Ещё раз спасибо, что рассказали про отладчик!

С уважением.
0
15145 / 6418 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
24.05.2014, 21:32 7
Лучший ответ Сообщение было отмечено SysUnit как решение

Решение

Цитата Сообщение от SysUnit Посмотреть сообщение
Вы могли бы пояснить, что это такое like?
Оператор для сравнения строк.
Поставьте курсор в слово like и нажмите F1. Откроется статья Like Operator. Если туго с английским, перейдите сразу в конец статьи, где примеры.
1
36 / 33 / 1
Регистрация: 11.01.2013
Сообщений: 388
24.05.2014, 21:41  [ТС] 8
Казанский, спасибо за ответ!
Цитата Сообщение от Казанский Посмотреть сообщение
Поставьте курсор в слово like и нажмите F1. Откроется статья Like Operator. Если туго с английским, перейдите сразу в конец статьи, где примеры.
Спасибо! Не знал

Казанский, Ваши сообщения очень выручают! СПАСИБО!

С уважением.
0
24.05.2014, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2014, 21:41
Помогаю со студенческими работами здесь

Удалить все строки матрицы, которые содержат нули
Дана квадратная матрица целых числе N*N(N-константа), заданная случайным образом, числами из...

Определить количество слов, которые содержат введенный символ
Дана строка из символов латинского алфавита, разделенных одним или несколькими пробелами....

Определить количество слов, которые содержат введенный символ
Доброго времени суток нужна помощь с заданием: Дана строка, состоящая из символов латинского...

Удалить все слова, которые содержат хотя бы одну латинскую букву
Подскажите, почему не работает программа, пожалуйста. :scratch:#include "stdafx.h" #include...

Удалить все элементы односвязного списка, которые содержат заданный символ
Дан односвязный список, в котором каждый элемент содержит символ. Необходимо удалить все элементы...

В текстовом файле удалить все слова, которые содержат хотя бы одну цифру
В данном текстовом файле удалить все слова, которые содержат хотя бы одну цифру.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru