Исправить поврежденный шрифт в многоуровневом списке в Word

У меня есть многоуровневый список, определенный в Word 2013.

Его уровень 4 поврежден и выглядит странно (все остальные уровни в порядке):

(должно быть "1.1. элемент списка уровня 4", но "1.1." просто замаскировано)

В окне "Определить новый многоуровневый список" его образец уже странный, он просто отображается в виде маленькой строки в левом верхнем углу текстового поля (см. Текстовое поле слева от "шрифта"), а образец в списке выглядит нормально.:

Открывая свойства "font" из окна "define new multilevel list", я вижу, что он имеет размер шрифта 0.

Однако даже после исправления размера шрифта (а также повторного выбора всех значений просто для уверенности) я не могу утвердить изменения, нажав ОК, и не перехожу на вкладку "Дополнительно", так как я получаю это сообщение об ошибке:

Я могу закрыть окно, только нажав Отмена. Поскольку это многоуровневый список, я не могу легко выбрать его часть, отформатировать по мере необходимости, а затем изменить стиль для соответствия форматированию.

Я также попробовал с макросом:

  • Font.reset не помогло
  • Font.Size 0; .Position, .Scaling & .Spacing все 9999999, но установка их на допустимое значение (12, 0, 100, 1 соответственно) ничего не делает (сообщения об ошибках нет, но и не улучшается).

Как я могу исправить этот шрифт, не воссоздав весь стиль списка?

3 ответа

Решение

Быстрый контекст

  • В таких приложениях, как Word, существует множество глобальных настроек, которые работают с такими вещами, как макет и внешний вид. Это не достигается путем встраивания управляющих символов в каждое соответствующее место в самом документе. Скорее, пользовательские выборы хранятся в виде централизованных настроек, и они применяются ко всему документу программно на основе правил.

  • Приложение предоставляет вам приятный графический интерфейс пользователя для работы с настройками, такими как меню и инструменты выбора настроек, показанные в вопросе. Однако это не то, что хранится как часть документа. Программное обеспечение создает этот дисплей из значений настроек, которые эффективно хранятся вместе с документом.

  • Параметры, определяющие эти правила, хранятся отдельно от содержимого документа. Я назову это инфраструктурой документов.

  • Поскольку настройки могут храниться в компактной форме, небольшое искажение может повлиять на множество различных правил и на разные части вашего документа. Однако симптомы ошибки могут быть диагностическими.

диагностика

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

  • Вы можете увидеть несколько бессмысленных проблем, особенно в связанном наборе настроек.

  • Вы не можете изменить настройки, или изменение настроек не прилипает.

  • Пользовательский интерфейс вынуждает вас выбирать из предустановленных значений или вводить значения, которые соответствуют правилам валидации. Таким образом, вы не сможете вручную ввести несоответствующие значения. В этом примере вы видите такие вещи, как размер шрифта 0 пунктов (который нельзя выбрать из списка). Этот символ в поле ввода числового формата не является чем-то, что вы ввели. Еще более показательно, если это то, что вы не можете напрямую манипулировать или удалять. Еще более показательно, если это символ, который не является стандартным символом клавиатуры.

Исправление коррупции

  • Вы имеете дело с созданным представлением некоторых сохраненных значений, а не с непосредственным манипулированием содержимым документа. Таким образом, вы можете изменять только то, что позволяет пользовательский интерфейс. Если пользовательский интерфейс не может понять поврежденные значения, вы не можете исправить их напрямую.

  • Пользовательский интерфейс может не вести себя логически относительно того, что отображается, когда он имеет дело с повреждением.

  • Возможно, вы не видите все проблемы. Пользовательский интерфейс отображает то, что он может в рамках того, что он был запрограммирован, чтобы сделать. Некоторые искаженные значения могут быть вещами, которые будут отображаться как странности. Другие могут быть вещами, которые не отображаются или не могут быть отображены. Третьи могут быть артефактами чего-то другого. Так что нет способа узнать степень коррупции (вы не знаете, чего не знаете).

  • Безопасное решение состоит в том, чтобы очистить и повторить его, а не пытаться исправить то, что похоже на конкретные отображаемые проблемы.

  • The fact that the document infrastructure is stored separately can be a benefit in the fix. If the corruption is in the infrastructure and the document content is intact, you may be able to replace the infrastructure.

    Create a new (empty) document using the same template as the corrupted one. Go into the corrupted document, select the whole document, and copy it. Paste that into the new document. If it's a humongous document, you might need to do this in several chunks rather than a single copy/paste.

    This will often give you a working document, again. Verify that all of your settings transferred to the new document. You might need to re-enter a few, but at least you will have a functioning user interface and will be able to do that.

Скриншот из VBA

Я нашел одно решение, очень простое.

  • Шаг 1: нажмите "Ctrl + F11" (этот шаг, чтобы открыть VBA)
  • шаг 2: удалите "Явный вариант" (этот шаг важен, если вы оставите "Явный вариант", вы получите ошибку при нажатии "F5")
  • Шаг 3: скопируйте и вставьте код здесь:
Sub ResetFontFormatsForLists()
For Each templ In ActiveDocument.ListTemplates

     For Each lev In templ.ListLevels

          lev.Font.Reset

     Next lev

Next templ
End Sub
  • Шаг 4: нажмите "F5", чтобы запустить код.

  • Шаг 5: Наслаждайся и улыбайся.

Я узнал об этом из этого источника: https://answers.microsoft.com/en-us/msoffice/forum/all/word-2013-multilevel-list-error/c606fc3e-bc30-4590-8e4b-9bfea7312d67

введите описание изображения здесь

Я смог сохранить свой документ благодаря ответу @Anh Chau. На моем уровне 3 произошла ошибка, шрифт цифр был установлен на «Times New Roman», и исправить это было невозможно. я нажалAlt + f11, нажмите на документ и вставьте это:

      Sub ResetFontFormatsForLists()
For Each templ In ActiveDocument.ListTemplates

     For Each lev In templ.ListLevels

        If lev.Index = 3 Then
          lev.Font.Reset
        End If
     Next lev

Next templ
End Sub

Нажмите кнопку «Выполнить», и проблема решена! Обратите внимание, что это похоже на его ответ, но с фильтрацией определенного уровня. В противном случае это испортило некоторые другие мои стили.

Другие вопросы по тегам