我今天的谷歌必须非常弱,因为有时这似乎是一个显而易见的事情,但我找不到任何人曾经在任何地方询问它的案例......
我有一份文件,我正准备在InDesign中进行适当的排版,其中包括除去段落和字符样式的本地覆盖。我做了一个find-and-replace来用一个名为 Italic 的字符样式替换所有斜体文本实例,但是愚蠢地忘了将它限制为应用了 Normal 样式的文本。
整个文档中散布着数百个标题,这些标题应该是斜体;这是他们段落样式定义的一部分。由于我忘了限制查找和替换, Italic 样式已应用于所有这些标题。令人讨厌的是,由于'italic'类似于Word中的布尔开关,这意味着所有这些标题现在都不是文档中的斜体。
我暂时没有注意到这一点,所以我现在不能简单地撤消它 - 自查找和替换以来文件已被保存并处理。作者(一个脾气暴躁,八十多岁的技术专家)也需要在文件设置之前再次查看该文件,因此最终无论Word文档中的字体是否为斜体都无关紧要,这对他来说很重要。
所以我非常想做的是搜索所有两者段落样式标题 和字符样式的文字 Italic 已应用,并删除字符样式。
这在InDesign中是一项简单的任务,其中段落和字符样式是单独的实体,但不是在Word中,它们都集中在一个庞大,混乱的堆中。它似乎不能通过UI完成,所以我猜我将不得不求助于VBA宏......我完全无能为力。
答案 0 :(得分:0)
这里有一些代码可以帮助您入门
按F5运行代码,它将停止在停止命令
检查立即窗口以确定标题样式
每个段落都会被选中,以便您可以分辨出正在检查哪一个
然后,您可以使用if / then语句修改代码以使特定段落斜体
Sub aaaa()
Dim ppp As Paragraph
Dim ccc As Range
For Each ppp In ActiveDocument.Content.Paragraphs
ppp.Range.Select ' visual aid only. not used by any other part of the program
Debug.Print "style :", ppp.Style
Debug.Print ppp.Style.Description
Stop
For Each ccc In ppp.Range.Characters ' you can probably comment out these 3 lines
Debug.Print ccc.FormattedText.Italic ' True prints as -1
Next ccc
Debug.Print "italic :", ppp.Range.Italic ' prints -1 if all are italic. 9999999 if some. 0 if none
ppp.Range.Italic = False ' this removes italic from whole paragraph
Next ppp
End Sub