Автор Тема: Word VBA: Как сделать зацикливание в макросе?  (Прочитано 2705 раз)

Антик

  • Гость
Добрый вечер. Есть Есть макрос, который форматирует текст. Пару букв один шрифт, следующие три буквы - другой шрифт и т.д. Но, когда макрос запускаю, то он редактирует только одну строчку. Как это сделать для всего громадного документа? СПАСИБО ЗАРАНЕЕ!!!

Пробовал и через if... then...else, но как-то видимо не то писал..

Мои попытки:
Макрос 1
Sub Макрос3()
'
' Макрос3 Макрос
'
'
 
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=11, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=6
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=8, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveLeft Unit:=wdCharacter, Count:=69
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Size = 11
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=12
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
End Sub
Макрос 2
Sub Макрос()
 
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=11, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=6
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=8, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveLeft Unit:=wdCharacter, Count:=69
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Size = 11
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=12
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
   
    Do
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=11, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=10, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=6, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=7, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveLeft Unit:=wdCharacter, Count:=6
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik2"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Name = "Antik3"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=8, Extend:=wdExtend
    Selection.Font.Name = "Antik4"
    Selection.MoveLeft Unit:=wdCharacter, Count:=69
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=8
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.Font.Size = 11
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=3, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=4
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=3
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=5
    Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
    Selection.Font.Size = 14
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveRight Unit:=wdCharacter, Count:=11
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=12
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend

    Loop Until Selection.Find.Execute = False
     
   
End Sub

Макрос 2 останавливает выполнение, либо в конце 5-6 строчки, либо в конце абзаца...

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #1 : 12 Февраль 2018, 09:16 »
опишите задачу словами

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #2 : 12 Февраль 2018, 11:31 »
Задача: отформатировать весь текст большого документа.
Создал макрос на первые пару строк текстового документа. Необходима заставить выполняться макрос не на последующие две строчки, а на весь документ!!! Вместо «Antik2» 3,4 можете подставить свои шрифты

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #3 : 12 Февраль 2018, 11:34 »
Что именно должен делать макрос? Если макрос должен делать много действий, то давайте сначала обсудим одно или небольшое кол-во действий.

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #4 : 12 Февраль 2018, 12:28 »
Я уже писал. Есть много текста. Я взял и отредактировал первую строчку. Запись макроса! В редактировании было следующее: первые 2 буквы - шрифт номер 1, следующие три буквы - шрифт номер 2, следующие две буквы шрифт номер 3. И так до конца строки в хаотичном порядке.

После того, как форматирование шрифтом окончено, приступил к форматированию размеров шрифта. Так же в хаотичном порядке. Первые три буквы 14 шрифт, затем 10 букв 12 шрифт, затем одна буква 11 шрифт и так до конца строчки.

Затем мне нужен будет буквенный интервал в хаотичном порядке. Стоп запись макроса!

При применении этого макроса, редактирование идет максимум до конца следующей строчки. Необходимо, чтобы макрос сам прошел и отредактировал весь текст до конца документа!

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #5 : 12 Февраль 2018, 14:03 »
В программе "Word" есть такое понятие "абзац". Если включить режим непечатаемых символов, то справа абзаца есть символ абзаца в виде буквы "Р", которая направлена влево.
В вашем файле нужно работать со строками или с абзацами?

В каком виде у вас файл? Или файл секретный и вы не можете его показать?

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #6 : 12 Февраль 2018, 14:07 »
Да содержание текста абсолютно не важно. Возьмите любую сказку или рассказ. Строка - то над чем я работал. Если проще сделать через абзац, то давайте попробуем.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #7 : 12 Февраль 2018, 14:10 »
Сначала вы изменяете имя шрифта у некоторых символов.
Затем вы ставите курсор в начало строки и изменяете размер шрифта у некоторых символов?
Так вы записывали макрос?

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #8 : 12 Февраль 2018, 14:30 »
Не совсем так. Несколько букв например таймс нью роман, потом несколько - ариал, затем несколько букв - тахома. И так до конца абзаца. Потом у некоторых букв меняем размер шрифта. И так до конца.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #9 : 12 Февраль 2018, 14:33 »
По такому принципу можно делать. То есть вам надо дописать для каждого движения вправо проверку, не достигнут ли конец файла:
If Selection.MoveRight(Unit:=wdCharacter, Count:=4, Extend:=wdExtend) = 0 Then Exit Function
Если достигнут конец файла, то движение вправо "MoveRight" вернёт ноль.

Кроме Selection можно использовать другое. В ворде не обязательно выделять, чтобы что-то сделать с фрагментом. Но есть исключения, когда необходимо выделить.

Ускорить макрос может режим "Черновик".

Макрос
Sub макрос()
   
    ' Откл. монитора (может это ускорит макрос и чтобы не мерцало).
    Application.ScreenUpdating = False
   
    '1. Изменение имени шрифта.
    ' Переход в начало файла.
    ActiveDocument.Range(0, 0).Select
    Do
        If ChangeFontName = False Then
            Exit Do
        End If
    Loop

    '2. Изменение размера шрифта.
    ' Переход в начало файла.
    ActiveDocument.Range(0, 0).Select
    Do
        If ChangeFontSize = False Then
            Exit Do
        End If
    Loop
   
    ' Сообщение.
    Application.ScreenUpdating = True
    MsgBox "Готово.", vbInformation
   
End Sub

Private Function ChangeFontName() As Boolean
 
    If Selection.MoveRight(Unit:=wdCharacter, Count:=4, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Name = "Antik4"
    If Selection.MoveRight(Unit:=wdCharacter, Count:=2) = 0 Then Exit Function
    If Selection.MoveRight(Unit:=wdCharacter, Count:=11, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Name = "Antik3"
    If Selection.MoveRight(Unit:=wdCharacter, Count:=2) = 0 Then Exit Function
    If Selection.MoveRight(Unit:=wdCharacter, Count:=10, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Name = "Antik2"
    If Selection.MoveRight(Unit:=wdCharacter, Count:=1) = 0 Then Exit Function
    If Selection.MoveRight(Unit:=wdCharacter, Count:=6, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Name = "Antik4"
   
    ' Пометка, что не дошли до конца файла.
    ChangeFontName = True

End Function

Private Function ChangeFontSize() As Boolean

    If Selection.MoveRight(Unit:=wdCharacter, Count:=2, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Size = 14
    If Selection.MoveRight(Unit:=wdCharacter, Count:=3) = 0 Then Exit Function
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Font.Size = 10
    Selection.Font.Size = 14
    If Selection.MoveRight(Unit:=wdCharacter, Count:=8) = 0 Then Exit Function
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    If Selection.MoveRight(Unit:=wdCharacter, Count:=2, Extend:=wdExtend) = 0 Then Exit Function
    Selection.Font.Size = 14

    ' Пометка, что не дошли до конца файла.
    ChangeFontSize = True
   
End Function

[вложение удалено администратором]

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #10 : 12 Февраль 2018, 22:57 »
АДМИНИСТРАТОРУ ГРОМАДНЫЙ РЕСПЕКТ!!! СПАСИБО БОЛЬШУЩЕЕ!!!
Немного чуть более расширенный Макрос для текста в 295 листов выполнялся порядка 12 минут!! Все отредактировал и ниразу ничего не пропустил и ниразу не самозациклился!

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #11 : 13 Февраль 2018, 08:47 »
В режим Черновик переходили перед запуском макроса? Я об этом писал в ответе 9.

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #12 : 13 Февраль 2018, 10:08 »
Нет, в черновик не входил! Не было надобности.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2066
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #13 : 13 Февраль 2018, 10:10 »
В этом режиме может быстрее работать. Не 12 минут, а например 5 минут.

Антик

  • Гость
Re: Word VBA: Как сделать зацикливание в макросе?
« Ответ #14 : 13 Февраль 2018, 10:12 »
Большое спасибо, совсем скоро учту это.