0 / 0 / 0 Регистрация: 26.11.2009 Сообщений: 5 |
|
1 |
|
26.11.2009, 14:45. Показов 17113. Ответов 17
Помогите мне написать макрос для редактирования текста
0 |
Заблокирован |
||||
26.11.2009, 20:40 |
2 |
|||
2 |
БурундукЪ 10027 / 2616 / 84 Регистрация: 17.02.2009 Сообщений: 10,364 |
||||
26.11.2009, 21:50 |
3 |
|||
.Text = «x» эта строка не верна
1 |
Заблокирован |
|
26.11.2009, 21:56 |
4 |
CyberБурундукЪ
0 |
10027 / 2616 / 84 Регистрация: 17.02.2009 Сообщений: 10,364 |
|
26.11.2009, 22:03 |
5 |
но я каким-то макаром проверил его и всё сработало. там 2 варианта: Не по теме: чудеса бывают только в сказках:)
0 |
Заблокирован |
|
27.11.2009, 06:59 |
6 |
CyberБурундукЪ,
1 |
0 / 0 / 0 Регистрация: 26.11.2009 Сообщений: 5 |
|
07.12.2009, 16:44 [ТС] |
7 |
Всем огромное Спасибо
0 |
0 / 0 / 0 Регистрация: 26.11.2009 Сообщений: 5 |
|
08.12.2009, 18:36 [ТС] |
8 |
Проверил работает но есть одна проблема макрос удаляет только одну строку в которой содержится заданное слово а таких строк в документе сотни. Нужно чтобы все строки были удалены. Подскажите что делать. Добавлено через 6 минут
0 |
Заблокирован |
|
08.12.2009, 20:46 |
9 |
Carcas,
0 |
Заблокирован |
||||
09.12.2009, 07:50 |
10 |
|||
Carcas,
2 |
0 / 0 / 0 Регистрация: 26.11.2009 Сообщений: 5 |
|
10.12.2009, 13:40 [ТС] |
11 |
Сегодня проверил работает из 1800 страниц с первого раза отфильтровал 700 но я заметил что тмакрос удалил не все строки с тем словом что я задал так я проделывал эту операцию несколько раз ушло еще 220 страниц но все равно удалены не все строки с этим словом и после каждого раза приходилось сохранять и закрывать документ что бы заново воспользоваться макросом а то глючило не хотело выделять строки мышкой но меня и это устраивает я сэкономил себе кучу времени всем кто участвовал от меня огромное СПАСИБО
0 |
Заблокирован |
|
10.12.2009, 20:07 |
12 |
Carcas,
1 |
Заблокирован |
|
11.12.2009, 05:13 |
13 |
Carcas,
0 |
0 / 0 / 0 Регистрация: 26.11.2009 Сообщений: 5 |
|
11.12.2009, 14:28 [ТС] |
14 |
Строки остаются по всему документу мелкими скоплениями по2-3 а на счет памяти у меня 1гиг ддр2
0 |
Заблокирован |
||||
12.12.2009, 12:22 |
15 |
|||
Carcas, Добавлено через 58 минут
0 |
keha 14 / 3 / 0 Регистрация: 27.07.2018 Сообщений: 88 |
||||
03.02.2019, 15:26 |
16 |
|||
А я вот так делаю
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
03.02.2019, 19:41 |
17 |
keha, этот код вообще ничего не заменяет, Option Explicit покажет почему.
1 |
keha 14 / 3 / 0 Регистрация: 27.07.2018 Сообщений: 88 |
||||
03.02.2019, 20:48 |
18 |
|||
Да я прям сейчас с текстом работаю и всё успешно меняет.
С таблицами сделал но, только изначально колонки должны быть одинаковой ширины
0 |
I would like to delete certain lines from my word document using a VBA macro. Basically the (block of) text to be deleted (and replaced by «***») follows a certain pattern (below).
Bottom of Form
perma-link
Top of Form
save
Bottom of Form
[+] ....
[–] ....
Top of Form
«….» represents text that changes every block, but for sure the line starts with «[+]» or «[-]».
Please suggest a suitable macro
EDIT: In the screenshot, I would like to keep the text in yellow and delete the rest. (in the actual file, the text isn’t in yellow)
PS-FYI, I tried using the example looping a find and delete row macro (for line by line deletion) but i get a runtime error 5941 with debugging option highlighting the line «selection.row.delete» in the macro.
What does this mean?
asked Oct 3, 2013 at 17:20
9
Assuming that the example list is a list of paragraphs beginnings the following code should do the trick. What you have to do is to place all ‘paragraphs starting’ into array arrRemove
as I did for the test. If any of the mark is a special marks (see this link for additional information) you need to add in front of it as I did for
[+]
and [-]
. Hope this is what you are looking for.
Sub Macro2()
Dim arrRemove As Variant
arrRemove = Array("Bottom of Form", "perma -link", "Top of Form", _
"[+]", "[-]", "Donec", "In")
Dim i!
For i = 0 To UBound(arrRemove)
Activedocument.Range(0,0).select
Selection.Find.ClearFormatting
With Selection.Find
.Text = arrRemove(i) & "*^13"
.Replacement.Text = "" 'replace with nothing
.Forward = True
.Wrap = wdFindContinue
.MatchCase = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub
The above macro will remove all yellow paragraph in the following document.
answered Oct 3, 2013 at 20:32
Kazimierz JaworKazimierz Jawor
18.8k7 gold badges35 silver badges55 bronze badges
1
В документе, загруженном из Интернета, слишком много пустых строк (перенос строк вручную). Чтобы сэкономить бумагу и место, нам нужно удалить все пустые строки. Есть ли более простой способ удалить все пустые строки вместо того, чтобы удалять каждую вручную? В этом руководстве будут перечислены три доступных метода для удаления всех пустых строк в целом или для выбора документов:
Удалите все пустые строки с помощью параметра Найти и заменить
Удалите все пустые строки с помощью VBA
Удалите все пустые строки с помощью Kutools for Word
Удалите все пустые строки с помощью параметра Найти и заменить
Наблюдения и советы этой статьи мы подготовили на основании опыта команды Найти и заменить функция в Word обычно используется для удаления всех пустых строк, но вы должны знать, что пустые строки называются Ручной перенос строки в Найдите то, что опцию.
1. Нажмите Замените на Главная таб. Смотрите скриншот:
2. Когда Найти и заменить появится диалоговое окно, нажмите Подробнее >> кнопку, чтобы отобразить дополнительные параметры. Затем поместите курсор в Найдите то, что поле и выберите Ручной разрыв строки из Особый выпадающее меню, см. снимок экрана:
3. Там будет «^l”Персонаж в Найдите то, что поле и нажмите Заменить все. Все ручные разрывы строк были удалены сразу, см. Снимок экрана:
Удалите все пустые строки с помощью VBA
В качестве альтернативы вы можете использовать макрос для удаления всех пустых строк, если вы хорошо разбираетесь в коде VBA, и вы можете следовать приведенным ниже инструкциям, например:
1, нажмите Alt + F11 для открытия Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модули, а затем скопируйте приведенный ниже код VBA в окно модуля.
Код VBA: удаление всех ручных разрывов строк в документе:
Sub Deleemptylines()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^l"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
3. Затем нажмите Запустить Sub кнопку для запуска кода, все ручные разрывы строк будут удалены.
Удалите все пустые строки с помощью kutools for Word
Вышеупомянутые методы требуют нескольких шагов для удаления всех пустых строк, но с Kutools for Word, только один щелчок мыши поможет вам завершить эту операцию.
1. Пожалуйста, примените эту утилиту, нажав Кутулс > Пустые параграфы > Удалить пустые разрывы строк вручную. Смотрите скриншот:
2. Затем появится диалоговое окно с напоминанием об удалении всех пустых строк, нажмите Да кнопку, см. снимок экрана:
3. После нажатия Да, вы можете видеть, что все пустые строки удалены из документа. Смотрите скриншот:
Внимание: Если вам просто нужно удалить пустые строки в выделении, вы должны выбрать диапазон перед применением этой функции.
Нажмите, чтобы скачать Kutools for Word и бесплатная пробная версия прямо сейчас!
Демонстрация: удаление всех пустых строк в Word
Рекомендуемые инструменты для повышения производительности Word
Kutools For Word — Более 100 расширенных функций для Word, сэкономьте 50% времени
- Сложные и повторяющиеся операции можно производить разово за секунды.
- Вставляйте сразу несколько изображений из папок в документ Word.
- Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
- Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
- Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Добрый день, существует макрос
[vba]
Код
Option Explicit
Dim myDocument As Word.Document
Sub cardWord()
Dim myWord As New Word.Application
Dim n As Integer
On Error GoTo InStr
Set myDocument = myWord.Documents.Open(ThisWorkbook.Path & «/DocWord.doc»)
For n = 0 To 10
myDocument.Content.Find.Execute «Товар_» & CStr(n), False, False, False, False, False, True, 1, False, «ТОВАР №» & CStr(n), 2
Next
‘Сохранение перед закрытием
myDocument.SaveAs (ThisWorkbook.Path & «/Измененная карта_карта.doc»)
myDocument.Close
‘myDocument.Close ‘Был отключен
myWord.Quit
Exit Sub
‘Обработчик ошибок
InStr:
If Err.Description <> «» Then
MsgBox «Ошибка » & Err.Description
myDocument.Close
myWord.Quit
End If
End Sub
[/vba]
Также существует файл Word с таблицей. Задача состоит в том, чтобы сделать так чтобы программа добавили строки в таблицу или удалила если необходимо в зависимости от изменения n.
То есть если товаров 100, то они должны быть в таблице, если 2 тоже должны быть в таблице, но в первом случае в таблице программным образом установить 100 строк, во втором 2. Спасибо
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
- VSL
- Начинающий
- Сообщения: 1
- Зарегистрирован: 03.08.2005 (Ср) 13:55
Удаление пустых строк из документа Word
Помогите, пожалуйста, удалить пустые строчки в Worde, так надоело их вручную удалять, а как написать макрос не хвататет времени читать.
Спасибо
- alibek
- Большой Человек
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 03.08.2005 (Ср) 15:00
- Код: Выделить всё
Do
With ThisDocument.Content.Find
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.Text = "^p^p"
If Not .Execute() Then Exit Do
If Not .Found Then Exit Do
.Replacement.Text = "^p"
.Execute Replace:=wdReplaceAll
End With
Loop
Lasciate ogni speranza, voi ch’entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
vadi61 Пользователь Сообщений: 236 |
#1 27.12.2015 17:39:43 Добрый день,
а как это перенести в Excel — не знаю. Один к одному не получается
стерло все содержимое… |
||||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#2 27.12.2015 17:45:51
Как из Excel обратиться к другому приложению Особое внимание уделить разъяснению различий между ранним и поздним связыванием и применением именованных констант(в Вашем случае это wdCharacter и wdStory). Плюс обратите внимание на ГЛАВНУЮ ОШИБКУ НОВИЧКА — Ваш случай. Selection есть в Excel и в Word и без явного указания родителя будет относится к приложению, в котором записано. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
SuperCat Пользователь Сообщений: 2737 |
#3 27.12.2015 18:28:09 Просто надо использовать переменную приложения Word:
В данном случае wdStory распознается, так как я использую раннее связывание (Early Binding). Изменено: SuperCat — 27.12.2015 18:29:31 There is no knowledge that is not power |
||
vadi61 Пользователь Сообщений: 236 |
#4 27.12.2015 19:16:04 The_Prist,
и здесь перед закрытием wd1 из него надо удалить две последние строки. SuperCat, Т.е. ошибка, видимо, потому, что значения констант wdStory и wdCharacter Еxcel’ю при позднем связывании неизвестны. А как их узнать, что бы задать цифрой? Нет ошибка не в этом. Нашел значение константы wdStory здесь но все равно ошибка. Изменено: vadi61 — 27.12.2015 19:29:37 |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#5 27.12.2015 19:28:21
как же Вы читали?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||||
vadi61 Пользователь Сообщений: 236 |
#6 27.12.2015 19:36:27 The_Prist, сделал как Вы сказали. Получил значения констант wdStory = 6, wdCharacter = 1
Ошибка: Объект не поддерживает свойство или метод |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#7 27.12.2015 19:43:54 Я бы вообще отказался от Selection ибо вредно это. Вполне можно вместо него использовать Range:
ну а вообще без полного кода трудно гадать. Да и примеры не помешали бы… Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
vadi61 Пользователь Сообщений: 236 |
The_Prist, та же ошибка на строке wd1.Range.EndKey 6 «Объект не поддерживает свойство или метод» |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#9 27.12.2015 19:48:48
Хочется увидеть, что именно Вы таким образом хотите удалить. Может есть другие методы — надежнее. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
#10 27.12.2015 19:55:18 Например, можно два раза эту строку выполнить:
или один раз такую:
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
||||
vadi61 Пользователь Сообщений: 236 |
The_Prist, изумительно. Большое спасибо. Попробовал второй вариант с одной строкой — получилось. |
vadi61 Пользователь Сообщений: 236 |
The_Prist, обнаружил ошибку. Удаляются символы не последние, а сдвинутые на количество картинок в файле. А вот дальше так: Может быть знаете как ее обойти? Изменено: vadi61 — 10.01.2016 03:49:41 |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#13 10.01.2016 06:07:42
А не мудрите ли вы? Если под пустыми строками подразумевается параграфы (всё что получается при нажатии кнопки Enter), то проще так. В примере в документе Word. Удаляет пустые параграфы (в том числе состоящие из одних пробелов). Успехов. Прикрепленные файлы
|
||
vadi61 Пользователь Сообщений: 236 |
Андрей VG,спасибо за ответ. Но это же Word! А мне нужно из Excel в вордовском файле строки удалять… У меня нет доступа к получившемуся Word-файлу. |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#15 10.01.2016 11:58:47
Это вы серьёзно — или шутка? Тогда это что?
Разве не доступ к документу Word? Чтобы использовать в моём коде этот документ достаточно заменить ThisDocument на wd1. Естественно, перенеся код в процедуре, в код книги. Успехов. |
||||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
А я вообще не понял про картинки и символы. Может настало время реально примера с данными, а не на словах описывать проблемы? Скорее соглашусь с Андреем — здесь явно нужен иной подход. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
vadi61 Пользователь Сообщений: 236 |
The_Prist, согласен. Как только доберусь до компьютера — подготовлю пример. Пока только два слова о самОй подготовке Word-файла. Сотрудник открывает Excel-файл, выбирает нужные значения из комбобоксов, устанавливает нужные переключатели, вводит какие-то значения. На основании этих данных Excel готовит данные для вставки в отчет. Потом при нажатии кнопки СОЗДАТЬ вызывается макрос, который выбирает нужные (из заранее подготовленных) шаблонов, вставляет в них данные, а затем соединяет несколько файлов-шаблонов в один готовый отчет. К этому отчету я доступа не имею, то есть все я должен сделать в Excel-макросе. Изменено: vadi61 — 10.01.2016 14:05:41 |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Так может имеет смысл сначала проверять наличие картинок и их кол-во? Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
vadi61 Пользователь Сообщений: 236 |
The_Prist, да, все решилось такой строкой PS. Готовить файлы примеров уже нет необходимости. Изменено: vadi61 — 10.01.2016 15:06:09 |
vadi61 Пользователь Сообщений: 236 |
#20 10.01.2016 15:23:02 The_Prist, я на параллельном форуме нашел Ваш совет от октября 2014 года, где Вы используете выражение Range.End Вставил в свой код
и сработало вне зависимости от количества картинок. |
||