@saysmonic , для ускорения работы макроса надо отключить обновление экрана. Пропиши в начале кода: Application.ScreenUpdating = False Пропиши в конце кода: Application.ScreenUpdating = True
@saysmonic, ага, а если ещё не заставлять ворд выделять селектом все подряд, то вообще будет гуд. Как именно в ворде это сделать не знаю, работаю только с экселем. Но одно могу сказать точно, забрать все значения и вывести с учётом этого символа будет на порядок(может даже 2) быстрее...
Главное чтобы никто не захотел пруфов в час ночи...
Я хочу Вас огорчить: у Вас другой часовой пояс... и ботинки...
Поскольку тратить своё РАБОЧЕЕ время на то, чтобы разобраться с названиями переменных в WORD я не хочу, вот тебе готовое решение (без выделения текста, найденное на просторах за 3 минуты):
Sub bb() Dim i& With ActiveDocument For i = .Range.End - 1 To 1 Step -1 If .Range(i - 1, i).Font.Size = 14 Then .Range(i, i).InsertAfter "*" Next End With End Sub
Макрос был создан автором для пометки звёздочкой символов с размером шрифта 14. Но для описанной задачи - вполне подойдёт.
1. ОТКРЫВАЕМ VBA (ctrl+f11) 2. Копируем текст оригинального макроса выше. 2. Вместо "14" пишем ваш размер шрифта. [переберёт весь документ и поставит после каждого символа c указанным размером знак "*"] 3. Вместо "*" ставим ваш НЕВИДИМЫЙ символ. 4. пользуемся.
Я не случайно использовал паузу в работе, а так же разбил на два цикла. Попробовал ваш вариант, убивает ворд( Все, чтобы я не делал не приносит успеха, кроме как добавить еще циклов вложенных. Возможно это специфика vba, возможно у меня компьютер слабый, но добиться какой то человеческой скорости работы макроса не получается иначе, как в случае, что написал я.