Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 仅当前面有特定字体大小的文本MS word时,才替换段落标记_Vba_Replace_Ms Word_Find - Fatal编程技术网

Vba 仅当前面有特定字体大小的文本MS word时,才替换段落标记

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

我有一个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
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。