Vba 仅当前面有特定字体大小的文本MS word时,才替换段落标记
我有一个MS Word文档(2016),其中包含不同字体的文本,如下所示 Abc.q 德福 //Vba 仅当前面有特定字体大小的文本MS word时,才替换段落标记,vba,replace,ms-word,find,Vba,Replace,Ms Word,Find,我有一个MS Word文档(2016),其中包含不同字体的文本,如下所示 Abc.q 德福 //Abc.的字体大小为20磅,表示段落标记的q的字体大小为10磅 //Def的字体大小为16磅,而q(段落标记)的字体大小为10磅 段落标记相当于回车CR(^13) 那么,如何将段落标记替换为字符串,但仅适用于字体大小为20磅的文本,在本例中仅为Abc.,使用Advance Find/replace或VBA生成Abc.string 我试过: Find: ^13 --> with font 10pt
Abc.
的字体大小为20磅,表示段落标记的q
的字体大小为10磅
//Def
的字体大小为16磅,而q
(段落标记)的字体大小为10磅
段落标记
相当于回车CR(^13)
那么,如何将段落标记
替换为字符串
,但仅适用于字体大小为20磅的文本,在本例中仅为Abc.
,使用Advance Find/replace或VBA生成Abc.string
我试过:
Find: ^13 --> with font 10pt
Replace: string
但在所有情况下,这都将段落标记
替换为字符串
。我甚至尝试用font=20.pt创建一个新样式,并在选项中为下面的段落设置q Normal(其中q
表示段落标记)
谢谢你的帮助 它可以像这样简单地完成(不使用Find
方法)
Sub ReplacePara()
Dim Para As Paragraph, Xstr As String, Rng As Range
Xstr = "String to be added"
For Each Para In ActiveDocument.Paragraphs
ln = Para.Range.Characters.Count
If ln > 1 Then
If Para.Range.Characters(ln - 1).Font.Size = 20 Then
Para.Range.Text = Left(Para.Range.Text, ln - 1) & Xstr
Set Rng = ActiveDocument.Range(Start:=Para.Range.Start, End:=Para.Range.Start + ln - 1 + Len(Xstr))
Rng.Font.Size = 20
End If
End If
Next
End Sub
测试以达到我理解为您的要求
编辑为添加的字符串指定前面文本(即20)的字体大小。字体名称、粗体、斜体等属性(由段落范围字符(ln-1)收集。字体……。
在替换之前分配给变量)也可以以相同的方式分配给添加的文本。@Ahmed_AU Hi@Ahmed。谢谢你的回答。这似乎有效。唯一的问题是要替换的段落标记与文本的字体大小不同。例如,Abc
的尺寸为20磅,而para标记的尺寸为10磅,但有时para标记的尺寸为8.5磅或其他。问题是当q
替换为字符串时,Abc
的字体大小将更改为段落标记的字体大小。那么,如何在不影响上一篇文章风格的情况下替换段落标记呢?把这个参数范围字符(ln-1)
分配到一个变量是不是很热?以设置更多选项。已编辑答案。请提供反馈。嗨,艾哈迈德,这一次有效,非常感谢。如果你有机会,我还有最后一期。我想用字符串
替换段落标记
的部分行以一个或多个数字开头。开始时这些数字的字体大小为8pt,我想在开始时保留这些数字的字体大小。示例:4这是一行
,208另一行
遵循您的逻辑,我认为这就像确定数字长度以避免更改其格式,但我不知道如何做。感谢对helpAnswer进行编辑,以将替换字符串字体大小的前导数字保持为8@AhmedU嗨,艾哈迈德。谢谢你的帮助。我认为你之前发布的代码效果更好。最后一个似乎不起作用。每段开头的数字的字体大小改为20。