0

我在 MS Publisher 中有一个 1000 页的文档。

我必须调整每个 TextFrame 的大小。每页大约有四个。

我的宏看起来像这样:

Sub Resize_Textbox()
Dim pubPage As Page
Dim pubShape As Shape
For Each pubPage In ActiveDocument.Pages
    For Each pubShape In pubPage.Shapes
        If pubShape.Type = pbTextFrame Then
            pubShape.TextFrame.Height = "21.5 cm"
            If pubShape.TextFrame.Width = "18 cm" Then
                pubShape.TextFrame.Width = "12.6 cm"
            End If
            If pubShape.TextFrame.Width = "8.75 cm" Then
                pubShape.TextFrame.Width = "6.3 cm"
            End If
        End If
    Next pubShape
Next pubPage
End Sub

我检查了宏安全并启用了所有宏。我保存了一切。

它给了我一个错误,我想更改文本框的高度。

4

2 回答 2

0

在 VBA 中,高度和宽度属性以点而不是文字 cm 为单位完成,您可以使用CentimetersToPoints它来将其转换为所需的值。

pubShape.TextFrame.Height = CentimetersToPoints(21.5)

不要包含“cm”后缀。

编辑\附加:

我运行了一个测试并没有得到你得到的错误,不同之处在于我正在使用声明的变量。您的错误消息通常暗示我们需要set =它,或者我们正在引用不存在的东西。

在您的方法中尝试以下方法,看看它是否有效(注意此示例仅适用于第一页):-

Public Sub test()
Dim pg As Page
Dim shp As Shape

Set pg = ThisDocument.Pages(1)
    For Each shp In pg.Shapes
        If shp.Type = pbTextFrame Then
            shp.Height = CentimetersToPoints(5)
        End If
    Next
Set pg = Nothing

End Sub
于 2016-05-29T21:20:05.120 回答
0

我意识到我做错了什么。我只需要这样做:

pubShape.Height = ...

中间没有TextFrame。

于 2016-05-31T13:38:50.220 回答