Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/89: Рейтинг темы: голосов - 89, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 5

Макрос для Word 2007: удаление строки с символом

26.11.2009, 14:45. Показов 18344. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите мне написать макрос для редактирования текста
Задача: найти строку с определенным словом и удалить ее
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2009, 14:45
Ответы с готовыми решениями:

Макрос для удаление строки, в которой отсутствуют заданные слова в таблице Word
Здравствуйте. Появилась необходимость автоматизированной обработки таблиц в Word. Суть: Есть файл Word (см. приложения) внутри которого...

Как написать макрос для документа Word - 2007 с нужными параметрами дат
Специалисты, HELP! В текстовый документ (бланк страхового полиса) нужно сделать кнопку в определенном месте (правый верхний угол), там, где...

Макрос в Word 2007
Нужна ваша помощ по созданию макроса!!! 1) Удаление лишних пробелов. 2) Удаление лишних знаков абзацев. 3) Выравнивание по ширине. ...

17
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.11.2009, 20:40
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub DeleteLine()
Dim x As String
 
x = InputBox("Введите слово для удаления строки")
With Selection.Find
    .ClearFormatting
    .Text = "x"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Execute
End With
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Delete
End Sub
2
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
26.11.2009, 21:50
Цитата Сообщение от Busine2009 Посмотреть сообщение
.Text = "x"
эта строка не верна
должно быть так
Visual Basic
1
.Text = x
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
26.11.2009, 21:56
CyberБурундукЪ
да точно, но я каким-то макаром проверил его и всё сработало.
0
 Аватар для BasicMan
19318 / 2625 / 84
Регистрация: 17.02.2009
Сообщений: 30,364
26.11.2009, 22:03
Цитата Сообщение от Busine2009 Посмотреть сообщение
но я каким-то макаром проверил его и всё сработало.
там 2 варианта:
либо ты по слову Х проверял, либо у тебя в макросе Х без кавычек стоит

Не по теме:

чудеса бывают только в сказках:)

0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
27.11.2009, 06:59
CyberБурундукЪ,
ты не поверишь, но мой макрос работает, я попробовал несколько раз. Сам не понимаю ничего. Попробуй сам. Я же говорил, что тестировал, прежде чем вставить его сюда.
1
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 5
07.12.2009, 16:44  [ТС]
Всем огромное Спасибо
0
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 5
08.12.2009, 18:36  [ТС]
Проверил работает но есть одна проблема макрос удаляет только одну строку в которой содержится заданное слово а таких строк в документе сотни. Нужно чтобы все строки были удалены. Подскажите что делать.

Добавлено через 6 минут
CyberБурундукЪ, Проверил работает но есть одна проблема макрос удаляет только одну строку в которой содержится заданное слово а таких строк в документе сотни. Нужно чтобы все строки были удалены. Подскажите что делать.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
08.12.2009, 20:46
Carcas,
Нет, не работает.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
09.12.2009, 07:50
Carcas,
вот по сусекам нашкрябал:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub DeleteLine()
Dim DeleteLine As String
DeleteLine = InputBox("Введите слово для удаления строки", "Удаляем строки")
If DeleteLine = Empty Then Exit Sub
Application.ScreenUpdating = False
With ActiveDocument.Range.Find
    .ClearFormatting
    .Text = DeleteLine
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    While .Execute
        Selection.HomeKey Unit:=wdLine
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.Delete
    Wend
End With
Application.ScreenUpdating = True
End Sub
2
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 5
10.12.2009, 13:40  [ТС]
Сегодня проверил работает из 1800 страниц с первого раза отфильтровал 700 но я заметил что тмакрос удалил не все строки с тем словом что я задал так я проделывал эту операцию несколько раз ушло еще 220 страниц но все равно удалены не все строки с этим словом и после каждого раза приходилось сохранять и закрывать документ что бы заново воспользоваться макросом а то глючило не хотело выделять строки мышкой но меня и это устраивает я сэкономил себе кучу времени всем кто участвовал от меня огромное СПАСИБО
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
10.12.2009, 20:07
Carcas,
пиши мне в почту, дам ссылку, где тебе может быть смогут ответить на твой вопрос.
Просто я вообще не шарю в программировании. Но ты можешь сам анализировать мой макрос, используя по ступенчатое его просматривание.
Я бы сюда вставил ссылку, но её удалят.
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
11.12.2009, 05:13
Carcas,
а эти строки остаются подряд в конце документа или хаотично разбросаны? Может быть здесь вопрос связан с Памятью: для выполнения этого Макроса памяти может не хватает?
0
0 / 0 / 0
Регистрация: 26.11.2009
Сообщений: 5
11.12.2009, 14:28  [ТС]
Строки остаются по всему документу мелкими скоплениями по2-3 а на счет памяти у меня 1гиг ддр2
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
12.12.2009, 12:22
Carcas,
сейчас ещё поковырялся. Надо Курсор ставить в начало документа. Потому что поиск осуществляется от места нахождения Курсора до конца документа.

Добавлено через 58 минут
Попробуй вот этот код, в данном случае Курсор может находиться в любом месте: поиск будет начинаться с начала документа:
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
Sub DeleteLine()
Dim DeleteLine As String
DeleteLine = InputBox("Введите слово для удаления строки", "Удаляем строки")
If DeleteLine = Empty Then Exit Sub
Application.ScreenUpdating = False
With ActiveDocument.Range.Find
    .ClearFormatting
    .Text = DeleteLine
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    While .Execute
        .Parent.Select
        Selection.HomeKey Unit:=wdLine
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        Selection.Delete
    Wend
End With
Application.ScreenUpdating = True
End Sub
0
14 / 3 / 0
Регистрация: 27.07.2018
Сообщений: 97
03.02.2019, 15:26
А я вот так делаю
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub DeleteLine()
    Dim str As String ' Где меняем
    Dim x As String ' Что под замену
    Dim y As String ' На что менняем
 
    y = "На что менняем"
 
    x = InputBox("Введите слово для удаления строки")
 
    Selection.WholeStory ' Выделяет всё
    str = Selection.Text ' Из выделенного в переменную
    str = Replace(str, x, y) ' Заменяет
    Selection.TypeText Text:=s ' Пишем в документ
    Selection.HomeKey Unit:=wdStory 'Курсор в начало документа
End Sub
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
03.02.2019, 19:41
keha, этот код вообще ничего не заменяет, Option Explicit покажет почему.
После исправления - а как дела с форматированием, с таблицами?
1
14 / 3 / 0
Регистрация: 27.07.2018
Сообщений: 97
03.02.2019, 20:48
Да я прям сейчас с текстом работаю и всё успешно меняет.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub ЗаменаТипаВсехУдаренийВорд()
 
    Dim s As String
    
    Selection.WholeStory
    
    s = Selection.Text
    s = Replace(s, ChrW(769), "=")
    Selection.TypeText Text:=s
'В начало документа
    Selection.HomeKey Unit:=wdStory
 
End Sub
С таблицами сделал но, только изначально колонки должны быть одинаковой ширины
и ещё что то включал чтобы не менялся размер ширины тогда и при возврате попадает всё хорошо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2019, 20:48
Помогаю со студенческими работами здесь

Макрос Word 2007 замена символов
Есть обычный текст к примеру "Длинная вода". Нужно, чтобы к примеру все буквы "о" после обработки макроса менялись на любой...

Создать в Word макрос заменяющий пять идущих подряд пробелов символом табуляции
Помогите выполнить данное задание...:-[ Задание: Создать в Word макрос заменяющий пять идущих подряд пробелов символом табуля-ции, если...

Как привязать один и тот же макрос к разным кнопкам в Word 2007?
Здравствуйте. Хотелось бы привязать один и тот же макрос к разным кнопкам, а в нем, в зависимости от того, какая кнопка нажата...

Макрос Word 2007: автоматически выполняется действие с выделенным фрагментом текста
Добрый день. Прошу помочь в реализации такого макроса. Есть текст в Word 2007, он почти весь однородный для макросов, т.к. только...

Удаление колонтитулов в Word 2007
Доброго времени суток. Вопрос: как удалить нижний колонтитул на отдельной странице в середине документа?


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru