修复 Word 中多级列表中损坏的字体

修复 Word 中多级列表中损坏的字体

我在 Word 2013 中定义了一个多级列表。

它的第 4 级已损坏并且看起来很奇怪(所有其他级别都很好):

在此处输入图片描述(应该是“1.1. 4 级列表项”,但“1.1.”被掩盖了)

在“定义新的多级列表”窗口中,它的示例已经很奇怪,它只是显示为文本框左上角的一条小线(参见“字体”左侧的文本框),而列表中的示例看起来很好:

在此处输入图片描述

从“定义新的多级列表”窗口打开“字体”属性,我可以看到它的字体大小为 0。

在此处输入图片描述

但是,即使在修复字体大小之后(并且为了确保万无一失还重新选择所有值),我还是无法通过按“确定”来批准更改,也无法转到高级选项卡,因为我收到此错误消息:

在此处输入图片描述

我只能通过按“取消”来关闭窗口。由于这是一个多级列表,我无法轻松选择其中的一部分,根据需要设置格式,然后更改样式以匹配格式。

我也尝试过使用宏:

  • Font.reset没有帮助
  • Font.Size为 0;.Position.Scaling&.Spacing均为 9999999,但将它们设置为有效值(分别为 12、0、100、1)根本不会产生任何效果(没有错误消息,但也没有任何改进)。

我怎样才能修复该字体而不重新创建整个列表样式?

答案1

快速上下文

  • 在 Word 等应用程序中,有很多全局设置用于处理布局和外观等问题。这不是通过在文档内容本身的每个相关位置嵌入控制字符来实现的。相反,用户的选择被存储为集中设置,并根据规则以编程方式应用于整个文档。

  • 该应用程序为您提供了一个漂亮的图形用户界面来处理设置,例如问题中显示的菜单和设置选择工具。但是,这并不是文档中存储的内容。该软件根据以有效方式存储在文档中的设置值生成该显示。

  • 驱动这些规则的设置与文档内容分开存储。我将其称为文档基础结构。

  • 由于设置可以以紧凑形式存储,少量损坏可能会影响许多不同的规则和文档的许多不同部分。但是,错误症状可以进行诊断。

诊断

有几个特征表明存在损坏,而不是不正确的用户设置,只需在菜单中输入正确的值即可修复。

  • 您可能会看到多个毫无意义的问题,特别是在相关的设置集合中。

  • 您无法更改设置,或者更改设置不起作用。

  • 用户界面强制您从预设值中选择或输入符合验证规则的值。因此,您无法手动输入不符合规则的值。在此示例中,您会看到诸如 0 磅字体大小之类的内容(无法从列表中选择)。数字格式输入框中的符号不​​是您输入的。更能说明问题的是,这是否是您无法直接操作或删除的内容。更能说明问题的是,它是否不是标准键盘字符的符号。

修复腐败

  • 您正在处理的是一些存储值的创建表示,而不是直接操作文档内容。因此,您只能更改用户界面允许您更改的内容。如果用户界面无法理解损坏的值,您就无法直接修复它们。

  • 处理损坏时,用户界面的行为可能不符合所显示内容的逻辑。

  • 您可能没有看到所有的问题。用户界面在编程限制内显示它能显示的内容。一些损坏的值可能会显示为异常。其他值可能不会显示或无法显示。还有一些可能是其他东西的产物。因此,无法知道损坏的程度(您不知道您不知道什么)。

  • 安全的解决方案是清除它并重做,而不是尝试修复看起来像特定显示的问题。

  • 文档基础结构单独存储这一事实对修复来说是一个好处。如果损坏发生在基础结构中,而文档内容完好无损,您可能能够替换基础结构。

    使用与损坏的文档相同的模板创建一个新的(空)文档。进入损坏的文档,选择整个文档并复制。将其粘贴到新文档中。如果文档很大,您可能需要分几部分进行操作,而不是一次复制/粘贴。

    这通常会再次为您提供一个工作文档。验证所有设置是否都已转移到新文档。您可能需要重新输入一些设置,但至少您将拥有一个正常运行的用户界面,并且能够执行这些操作。

答案2

从 VBA 截屏

我找到了一个解决方案,非常简单。

  • 步骤1:按“Ctrl + f11”(此步骤是打开VBA)
  • 步骤2:删除“Option Explicit”(此步骤很重要,如果保留“Option Explicit”,则按“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”运行代码。

  • 第五步:享受并微笑。

我从这个来源了解到了这一点: https://answers.microsoft.com/en-us/msoffice/forum/all/word-2013-multilevel-list-error/c606fc3e-bc30-4590-8e4b-9bfea7312d67

在此处输入图片描述

答案3

感谢@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

按下运行按钮,问题就解决了!请注意,这就像他的答案,但过滤了特定级别。否则,它会弄乱我的其他一些风格。

相关内容