【问题标题】:How to resize a TextFrame如何调整文本框的大小
【发布时间】:2016-09-27 15:27:00
【问题描述】:

我在 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

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

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

【问题讨论】:

    标签: vba ms-publisher


    【解决方案1】:

    在 VBA 中,height 和 width 属性以点而不是字面 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
    

    【讨论】:

    • 感谢您的快速回答!所以我尝试了没有 cm 和 " " 标记,我尝试做和你在那里做的一样的事情,但没有任何效果。我仍然在 .Height 行上收到编译错误:“找不到方法或数据成员”
    • @Toma,我在答案中添加了更多内容,看看是否有帮助。
    【解决方案2】:

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

    pubShape.Height = ...
    

    中间没有TextFrame。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多