word vba: выполнение цикла по сбросу формата документа

#vba #ms-word #format

#vba #ms-word (ms-word) #формат #ms-word #форматирование

Вопрос:

Я хочу просмотреть свой документ Word, удалив все фоновые цвета для каждого слова. Пока это мой код, но он не работает — я получаю следующее сообщение об ошибке «Аргумент не является необязательным» и «.Item» выделяется:

 Sub ResetColor()
Dim doc As Document
Set doc = ActiveDocument
Set eword = doc.Range.Words.Item

 For i = 1 To doc.Range.Words

  eword.Shading.Texture = wdTextureNone
  eword.Shading.ForegroundPatternColor = wdColorAutomatic
  eword.Shading.BackgroundPatternColor = wdColorAutomatic

 Next

End Sub
  

Ответ №1:

Попробуйте это:

 Sub ResetColor()
    Dim doc As Document
    Set doc = ActiveDocument

    For Each eword In doc.Range.Words

      eword.Shading.Texture = wdTextureNone
      eword.Shading.ForegroundPatternColor = wdColorAutomatic
      eword.Shading.BackgroundPatternColor = wdColorAutomatic

    Next

End Sub
  

Комментарии:

1. Я получаю сообщение об ошибке «Команда недоступна» и eword. Затенение. Текстура = wdTextureNone выделена, хотя макрос запускается правильно.

2. Эта ошибка возникнет, если документ защищен или доступен только для чтения. Убедитесь, что у вас есть доступ на запись к документу.

3. Хм. Нет, документ не защищен и не доступен только для чтения. Проверил оба, но он работал с новым документом, поэтому макрос работает. Спасибо.