【发布时间】:2020-04-17 23:57:23
【问题描述】:
我创建了一个模板(一系列许多类似模板中的一个),该模板将分发给多个用户,用于创建(音频和数字文件的)转录本。成绩单包括一些专门用于格式化文本的样式。
该模板包含一系列宏,可临时更改每种自定义样式的字体颜色,以帮助快速校对格式,然后使用另一个宏将它们全部更改回黑色/自动字体颜色.
只要在任何自定义样式中都没有直接格式化字体颜色,这个过程就可以顺利进行。但是,我正在考虑某些用户可能会选择选择所有文本并使用直接格式化方法将临时彩色字体恢复为黑色的可能性。如果他们这样做,它会使所有以颜色为中心的宏(更改为颜色,更改回黑色)无用。
这可能会带来很大的问题,因为这些用户生成的成绩单最终会提交给分包商,分包商可能希望自己使用以颜色为中心的宏进行额外的校对,然后再将最终成绩单提交给她的客户。但如果用户应用了字体颜色的直接格式,它们将不再起作用。
通过使用“清除格式”选项,然后重新应用样式,我能够手动和通过宏删除直接格式化字体颜色。但这不是解决这个难题的实际解决方案,因为任何给定的段落都可能包含其他属性,例如粗体、下划线或斜体文本,当应用“清除格式”选项时,这些属性会丢失。我曾考虑将字符样式应用于这些属性,但我无法保证用户会使用它们,因此在尝试处理潜在的字体颜色问题时仍然存在丢失属性的风险。
我在 Word 中进行了详尽的实验,并在帮助文件中以及在 Google 上进行了广泛搜索,但我找不到任何有助于仅删除相对于字体颜色的直接格式同时保持其他直接格式属性不变的信息,以便我可以使用宏来改变样式中的字体颜色。
我是不是只见树木不见森林,而这一切都错了?还是我的宏代码中缺少一个可以解决此问题的小元素?
我复制了下面两个主要的以颜色为中心的宏。实际上有 8 个附加宏属于同一类别,因为我还为用户提供了更改单个样式以及 QUESTION 和 ANSWER 样式中的字体颜色的选项(同时不更改任何其他样式)。但它们只是下面显示的代码的相同 sn-ps,配对以处理个别样式。
提前感谢您的帮助!
将所有样式更改为不同的颜色:
Sub STYLES_AllColors()
With ActiveDocument.Styles("#CENTERED (DS)")
.Font.ColorIndex = wdGray50
End With
With ActiveDocument.Styles("#FLUSH LEFT (DS)")
.Font.ColorIndex = wdDarkYellow
End With
With ActiveDocument.Styles("#PARENTHETICAL")
.Font.ColorIndex = wdViolet
End With
With ActiveDocument.Styles("#QUESTION (looped)")
.Font.ColorIndex = wdRed
End With
With ActiveDocument.Styles("#ANSWER (looped)")
.Font.ColorIndex = wdBlue
End With
With ActiveDocument.Styles("#QA2 (continuing paragraph)")
.Font.ColorIndex = wdTurquoise
End With
With ActiveDocument.Styles("#QA (plain format)")
.Font.ColorIndex = wdDarkRed
End With
End Sub
将所有样式改回黑色/自动:
Sub STYLES_AllBlack()
With ActiveDocument.Styles("#CENTERED (DS)")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#FLUSH LEFT (DS)")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#PARENTHETICAL")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#QUESTION (looped)")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#ANSWER (looped)")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#QA2 (continuing paragraph)")
.Font.Color = wdColorAutomatic
End With
With ActiveDocument.Styles("#QA (plain format)")
.Font.Color = wdColorAutomatic
End With
End Sub
【问题讨论】:
-
这个问题最好在最终用户论坛中提出,您更有可能在 Answers 网站上找到其他专业处理文档的人。使用 Word,如果您无法在 UI 中完成,通常无法使用宏完成,这是一个很好的经验法则。 FWIW 我相信您需要为粗体和斜体等内容提供字符样式。而且您需要“调整” UI 以禁用/隐藏内置命令。这将包括模板中的功能区,其粗体和斜体按钮应用您的样式,以及重新映射键盘快捷键。这一切皆有可能……
-
感谢您的回复,辛迪。我不知道答案网站。当谈到知道如何充分利用这个网站及其有用信息的宝库时,我仍然是绿色的。同时,我可能已经找到了一个合适的解决方法,至少现在是这样(我将添加到我的原始帖子中)。如果这被证明有问题,我将使用您的建议在答案网站上发布。谢谢!