Vba WORD-通过引号中的文本查找和替换文本
如何查找和修剪引号文本之间的空格 例如:如果单词包含以下字符串: 我对他说‘我为什么要这样做?’他回答…… 它将取代: 我问他‘我为什么要?’他回答…… 我知道在引号中查找文本的正则表达式是:(\“*?\”),但从这里我无法继续 任何帮助都将不胜感激Vba WORD-通过引号中的文本查找和替换文本,vba,ms-word,Vba,Ms Word,如何查找和修剪引号文本之间的空格 例如:如果单词包含以下字符串: 我对他说‘我为什么要这样做?’他回答…… 它将取代: 我问他‘我为什么要?’他回答…… 我知道在引号中查找文本的正则表达式是:(\“*?\”),但从这里我无法继续 任何帮助都将不胜感激 Asi对于VBA解决方案,请尝试: Sub Demo() Dim Rng As Range, Rslt With ActiveDocument.Range With .Find .ClearFormatting .Replace
Asi对于VBA解决方案,请尝试:
Sub Demo()
Dim Rng As Range, Rslt
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[‘'][!^13^l^t]@['’]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
.Select
Set Rng = .Duplicate
With Rng
.Start = .Start + 1
.End = .End - 1
If .Text <> Trim(.Text) Then
Rslt = MsgBox("Trim this instance?", vbYesNoCancel)
If Rslt = vbCancel Then Exit Sub
If Rslt = vbYes Then
Do While .Characters.Last = " "
.Characters.Last = vbNullString
Loop
Do While .Characters.First = " "
.Characters.First = vbNullString
Loop
End If
End If
End With
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
End Sub
致:
要仅使用选定范围,请更改:
Dim Rng As Range, Rslt
With ActiveDocument.Range
致:
并插入:
If .InRange(RngSel) = False Then Exit Sub
之前:
.Select
我看到你标记了三种语言。你能告诉我们你对每种语言的代码都做了多少吗?另外:你更喜欢使用哪种语言?FWIW不要试图在Word中使用正则表达式;使用Word内置的查找功能和通配符。它们类似于正则表达式,但不完全相同。此外,根据堆栈溢出准则,此问题的范围“太广”(请参阅)。每个问题应该只有一个问题主题——你至少要问两个。请使用链接添加您尝试过的不起作用的代码-堆栈溢出不是免费的编码服务…请确保您正确标记了内容,我已编辑了您的问题以删除vb.net和vbscript,因为它们不正确。您还需要发布到目前为止所做工作的副本,Stack Overflow不是一个代码编写血汗工厂,它是一个用于学习和构建的信息库。我们不会为您编写代码,我们会教您如何自己修复代码,以便下次更好地武装您。谢谢!我可以问一下,如果我希望它只对选择文本起作用,我应该怎么做?(而不是在整个文档上)@AsiB请参见编辑后的答案。注意:如果您从一开始就说明了您的全部要求,这将是很有帮助的。
Dim Rng As Range, RngSel As Range, Rslt
With Selection.Range
Set RngSel = .Duplicate
If .InRange(RngSel) = False Then Exit Sub
.Select