Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 30
1
VBS

Замена фразы, соответствующей шаблону, в Word

28.04.2018, 14:56. Показов 2197. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Word файл содержит текст с разными шрифтами, а так же таблицы/картинки. Требуется в нём найти текст соответствующий одному из 4 шаблонов и удалить. Текст может быть и в ячейках таблиц где разное форматирование.
1. Есть ли способ, как стандартный вордовский по замене, не обращая внимания на формат соседних элементов и искомого?
2. Возможна ли запись в ячейку таблицы word-документа текста, имеющего различный формат, например:
Жирный:
остальной текст.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2018, 14:56
Ответы с готовыми решениями:

Замена слов по шаблону Word (C#)
Всем добрый вечер! Помогите плз. Есть Ворд файл: Спарвка1.doc. В нем расставлены метки, например...

Замена текста по шаблону и удаление внешних тегов, относящихся к найденному шаблону
Привет всем, Есть небольшой html файл в котором надо искать вот такие шаблоны: @130, @131, @132...

Из StringGrid в Word по шаблону
Есть шаблон Word с закладками. Вывожу в него данные из StringGrida при помощи кода: void...

Создать документ Word по шаблону?
Если просто создавать документ, то все создается без проблем. MSWORD.Documents.Add; Но если...

9
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,128
01.05.2018, 12:22 2
1. Смотря что называть форматом и элеменами.
2. Да.
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 30
02.05.2018, 07:51  [ТС] 3
1. Текст в ячейках таблиц жирный и обычный, нужно удалить часть нежирного текста. Взяв текст из ячейки удалив лишнее не удаётся записать обратно сохранив исходные шрифты: Cell.Range.Font.Bold устанавливает жирность для всей ячейки, а Cell.Range.Text заменяет данные целиком, отсюда и возникает второй вопрос. Но конечно хочется использовать более простой способ по замене, тем более что в ворде это давно есть.
2. В поиске нашёл возможность сделать с помощью Characters, но у меня не получилось применить этот метод к ячейке таблицы с помощью vbs.
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,128
08.05.2018, 16:34 4
MrGaribaldi, у меня сейчас накладки с Офисом. Пока не могу детально помочь.
Вы после записи макроса из vba-отладчика код тянуть не пробовали?
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 30
11.05.2018, 07:50  [ТС] 5
FlasherX, Использую vbs, пишу в notepad++, отладчика стороннего нет.
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,128
11.05.2018, 08:35 6
MrGaribaldi, т. е. "стороннего"? Вы вообще с макросами дело имели? В параметрах установки Office по умолчанию включаются Общие средства Office с компонентом Visual Basic для приложений. На современных версиях на вкладке Вид есть кнопка Макрос. Там запись и просмотр с переходом к редактированию.
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 30
19.05.2018, 10:52  [ТС] 7
FlasherX, Когда-то очень давно имел, сейчас для меня это дремучий лес. Поэтому и создаю сценарии, которые должны работать для сотен файлов и для этого начал изучать vbs. Но проблема со скудными материалами для изучения вскрытия и работы с вордом, отсюда и вопросы...
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,128
19.05.2018, 14:27 8
MrGaribaldi, VBA имеет тот же синтаксис, только свои объекты подключаются иначе, а константы именные. Записывайте макрос со всеми требуемыми манипуляциями, потом тащите код из встроенного отладчика. Подстроить его под vbs не так сложно, даже без изучения vba. Но вообще книг по VBA море.
0
0 / 0 / 0
Регистрация: 25.06.2017
Сообщений: 30
21.05.2018, 19:12  [ТС] 9
Есть ли возможность с помощью Replace удалить пустые абзацы(банальные лишние Enter) в Word?
Пробовал Replace(mas, vbCr & Chr(7), "") или как советовали в интернете Chr(10) или подобное, но от него толку нет.
Сделал с помощью регулярных выражений:
Visual Basic
1
2
3
4
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = "(?:(^)[\n\r]+|(\r?\n)[\n\r]*)"
objRegEx.IgnoreCase = True
objRegEx.Global = True
objRegEx.Replace(Cell.Range.Text, "$1$2")

Но компьютер довольно долго выполняет теперь скрипт.
0
6228 / 2670 / 1051
Регистрация: 06.06.2017
Сообщений: 9,128
21.05.2018, 21:06 10
Лучший ответ Сообщение было отмечено MrGaribaldi как решение

Решение

Да, это будет небыстро. А если в цикле по разным кускам документа, то тем более.
(^) - не понял смысла. IgnoreCase тут не нужен. Пример без Word'a:
Visual Basic
1
2
3
4
5
6
Text = "(" & String(4, vbLf) & "строка1" & String(3, vbCrLf) & "строка2" & vbLf & "строка3" & String(2, vbCrLf) & "строка4" & String(2, vbCr) & ")"
With New RegExp
  .Global = True : .Pattern = "[\r\n]+(?=\r|\n)"
  MsgBox "До:" & vbCr & Text
  MsgBox "После:" & vbCr & .Replace(Text, "")
End With
0
21.05.2018, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2018, 21:06
Помогаю со студенческими работами здесь

Отчет в Word по готовому шаблону
Здравствуйте! Помогите, пожалуйста, новичку разобраться. Необходимо полученные из БД данные вывести...

Создание документа Word по шаблону
Добрый день! Подскажите, как сделать такой макрос. Нужно составить отчет в Word на основе данных...

Замена текста по шаблону не срабатывает
Сазу скажу, с Perl не знаком абсолютно. Есть скрипт веб-авторизации для подключения к хотспоту,...

Замена строк в ListBox по шаблону
Здравствуйте! Возможно уже был этот вопрос, а может и нет, и я первый =) По лабе создаю прогу, она...


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

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