AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 77296446
Accepted
User1836
User1836
Asked: 2023-10-15 19:32:58 +0800 CST2023-10-15 19:32:58 +0800 CST 2023-10-15 19:32:58 +0800 CST

搜索括号内的文本并设置其格式

  • 772

我的 Word 文档中有包含括号的文本。我想在这些括号内格式化一个单词。

示例文本:

黑洞的存在可以通过黑洞与其他物质以及可见光等电磁辐射的相互作用来推断。任何物质(落入黑洞都可以)形成外部吸积盘,通过摩擦加热,形成类星体,这是宇宙中最亮的物体之一。

格式化文本:

黑洞的存在可以通过黑洞与其他物质以及可见光等电磁辐射的相互作用来推断。任何物质(落入黑洞都可以)形成外部吸积盘,通过摩擦加热,形成类星体,这是宇宙中最亮的物体之一。

在格式化文本中,“黑色”一词如果出现在括号内,则为粗体和斜体。

我找到了一种方法来识别括号内的所有单词。如何应用格式设置?

Sub Macro1()
    With ActiveDocument.Range.Find
        .Text = "(\(*\))"
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
        .Execute Replace:=wdReplaceAll
    End With
End Sub
vba
  • 2 2 个回答
  • 39 Views

2 个回答

  • Voted
  1. Best Answer
    vbakim
    2023-10-15T20:35:50+08:002023-10-15T20:35:50+08:00

    我将VBA放入Word中,并修改代码如下:

    Sub ReplacInParentheses (beforeWord as string, afterWord as string)
        Dim regex As Object
        Set regex = CreateObject("VBScript.RegExp")
        regex.Global = True
        regex.IgnoreCase = True
        regex.Pattern = "\(([^)]*)\)"
        
        Dim doc As Document
        Set doc = ActiveDocument
        
        For Each match In regex.Execute(doc.Range.Text)
            Dim newText As String
            newText = Replace(match.SubMatches(0), beforeWord, afterWord)
            doc.Range.Text = Replace(doc.Range.Text, match.Value, "(" & newText & ")")
        Next match
    End Sub
    
    Sub test()
     ReplacInParentheses "black", "white"
    End Sub
    
    • 1
  2. taller
    2023-10-16T02:58:40+08:002023-10-16T02:58:40+08:00

    单词搜索和替换功能足够强大,无需正则表达式即可完成。

    Sub BlackInParentheses()
        Dim rng As Range, new_rng As Range
        Dim text As String
        Const KEYWORD = "black" ' Modify as needed
        Set rng = ActiveDocument.Content
        ' search KEYWORD
        With rng.Find
            .ClearFormatting
            .text = "\(* " & KEYWORD & " *\)"
            .MatchWildcards = True
            .Wrap = wdFindStop
            .Forward = True
        End With
        Do While rng.Find.Execute
            Set new_rng = rng.Duplicate
            With new_rng.Find
                .ClearFormatting
                ' Extra space is a word boundary, otherwise `blackboard` will be replaced
                .text = "( " & KEYWORD & " )"
                .MatchWildcards = True
                .Wrap = wdFindStop
                .Forward = True
                ' Change font
                With .Replacement
                    .ClearFormatting
                    .text = "\1"
                    .Font.Bold = True
                    .Font.Italic = True
                End With
                ' replace w/ format
                .Execute Replace:=wdReplaceAll
            End With
            rng.Collapse wdCollapseEnd
        Loop
    End Sub
    
    
    • 1

相关问题

  • 使用 VBA 将形状分配给 Powerpoint 中的组

  • Word VBA,将光标移动到编号列表中下一个数字的开头

  • 使用 vba 宏为每个帐户执行 Outlook 规则

  • 从访问 OLE 对象中提取文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve