【问题标题】:(MS Word) Removing character style IF text has specific paragraph style applied(MS Word)如果文本应用了特定的段落样式,则删除字符样式
【发布时间】:2018-01-24 11:03:03
【问题描述】:

我的 Google-fu 今天一定很弱,因为这似乎是一件很明显的事情,有时需要做,但我找不到任何人在任何地方询问过它的案例……

我有一个文档,我正在准备在 InDesign 中进行正确排版,其中包括摆脱对段落和字符样式的本地覆盖。我做了一个查找和替换,用一种名为 Italic 的字符样式替换所有斜体文本实例,但愚蠢地忘记了将其限制为应用了 Normal 样式的文本。

整个文档中散布着数百个标题,这些标题应该是斜体;这是他们段落样式定义的一部分。由于我忘记限制查找和替换,Italic 样式被应用于所有这些标题。烦人的是,由于“斜体”类似于 Word 中的布尔开关,这意味着所有这些标题现在在文档中都不是斜体了。

我有一阵子没有注意到这一点,所以我现在不能简单地撤消它 - 自从查找和替换后,该文件已被保存和处理。作者(他是一个脾气暴躁、八十多岁的技术恐惧症患者)还需要在设置文件之前再次查看该文件,因此虽然最终在 Word 文档中字体是否为斜体并不重要,但这对他来说很重要。

所以我非常想做的是搜索所有具有 both 段落样式 Header 字符样式的文本斜体应用,并删除字符样式。

这在 InDesign 中是一项简单的任务,其中段落和字符样式是独立的实体,但在 Word 中却不是,因为它们都集中在一个大而杂乱的堆中。似乎无法通过 UI 完成,所以我猜我将不得不求助于 VBA 宏……我完全无能。

有没有办法找到具有特定段落样式和特定字符样式的文本,然后从该文本中删除字符样式?

【问题讨论】:

    标签: vba replace ms-word


    【解决方案1】:

    这里有一些代码可以帮助您入门

    按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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多