替换MS Word中所有制表符的位置

问题描述 投票:1回答:1

我有一个文件,有4个标签。1厘米、5厘米、9厘米和13厘米。

enter image description here

如图所示,有的段落有4个制表符,有的段落有2个制表符(1cm和9cm)或1个制表符(1cm)。有的段落没有任何停顿(如问题1,2,3),有的段落有2个停顿(1cm和9cm)或1个停顿(1cm)。

我想写一个VBA,它可以改变当前所有的制表符停顿,但不会在2停和1停的段落中增加任何额外的停顿。

应该是这样的。

*find all 1cm stops and change into 1.5cm stop
find all 9cm stops and change into 9.5cm stop
and so on.*

我试着录下一个宏来做这个任务,然后把代码写出来 但还是没能让它工作。

vba tabs word
1个回答
0
投票

你可以使用以下VBA Word代码

Private Sub ReLocateTabStop(nFindPos As Single, nReplacePos As Single)

Dim oParagraph As Word.Paragraph
Dim oTabStop As Word.TabStop

For Each oParagraph In ActiveDocument.Paragraphs
    For Each oTabStop In oParagraph.TabStops
        If Abs(oTabStop.Position - Application.CentimetersToPoints(nFindPos)) < 0.1 Then
            oTabStop.Position = Application.CentimetersToPoints(nReplacePos)
        End If
    Next
Next

End Sub

此例程(子)在所有段落中搜索一个具有特定位置的标签。

当它被找到时,位置将被改变。

小贴士。

我使用 Application.CentimetersToPoints() 转换 CentimetersDecimal 这样我就可以用 Points 作为单位。

我用 Abs()Round() 职能,因为 PositionTabStops

例子:TabStop设置为2厘米,位置包含56.7点。

TabStop被设置为2厘米,位置包含56.7点。但是Application.CentimetersToPoints(2#)返回......。56.69291

我使用以下代码进行测试

Public Sub TestReLocateTabStop()
    Call ReLocateTabStop(1#, 1.5)
    Call ReLocateTabStop(9#, 9.5)
End Sub

# 对于整数,会自动添加字符。

我已经测试了我写的东西,它的工作。

© www.soinside.com 2019 - 2024. All rights reserved.