You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA提取Word文档中带引号的短语?代码问题求助

解决Word VBA提取双引号内文本的问题

修改后的代码

Sub ExtractText()
    Dim cDoc As Word.Document, nDoc As Word.Document
    Dim cRng As Word.Range, nRng As Word.Range
    
    Set cDoc = ActiveDocument
    Set nDoc = Documents.Add
    
    Set cRng = cDoc.Content
    Set nRng = nDoc.Content
    
    cRng.Find.ClearFormatting
    With cRng.Find
        .Forward = True
        .Text = """"  ' VBA中用四个双引号表示单个实际双引号
        .Wrap = wdFindStop
        .MatchWildcards = False  ' 关闭通配符,避免双引号被解析为特殊符号
        .Execute
        Do While .Found
            cRng.Collapse Word.WdCollapseDirection.wdCollapseEnd
            ' Cset参数同样用四个双引号表示单个双引号
            cRng.MoveEndUntil Cset:="""", Count:=Word.wdForward
            
            nRng.FormattedText = cRng.FormattedText
            nRng.InsertParagraphAfter
            nRng.Collapse Word.WdCollapseDirection.wdCollapseEnd
            cRng.Collapse Word.WdCollapseDirection.wdCollapseEnd
            .Execute
        Loop
    End With
End Sub

问题说明与解决逻辑

  1. 转义双引号:在VBA字符串中,单个实际双引号需要用两个双引号转义,因此查找双引号时,.Text和MoveEndUntil的Cset参数都要写成""""(四个双引号,最终解析为一个实际双引号)。
  2. 关闭通配符:Word的Find对象如果开启了通配符模式,双引号会被当作分组标记的特殊符号,而非普通文本。添加.MatchWildcards = False可以强制关闭通配符,确保双引号被识别为目标字符。

内容的提问来源于stack exchange,提问作者Alex Waldron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:25:33