2

嗨 MS Publisher VBA 程序员:-)

看起来如此简单的事情实际上没有记录。我需要做的就是能够以编程方式将文本插入文本框中,然后在我添加更多文本时让文本调整大小垂直扩展自身。

如果我通过插入 TextBox 并在 TextBox 的“格式”选项卡的“文本适合”下拉菜单中选择“使文本框适合”选项来手动执行此操作,则效果很好。

此代码不起作用:

Sub myGrowToFit()
        Set myTextBox = ActiveDocument.Pages(1).Shapes.AddTextbox _
             (Orientation:=pbTextOrientationHorizontal, _
             Left:=0, Top:=0, _
             Width:=100, Height:=40)
        myTextBox.TextFrame.TextRange.text = "Line1" & vbLf & "Line2" & vbLf & "Line3" & vbLf & "Line4"
        myTextBox.TextFrame.AutoFitText = pbTextAutoFitGrowToFit
        MsgBox ("Press OK to Continue After You View The Result")
        myTextBox.Delete
End Sub

有任何想法吗?谢谢。

4

1 回答 1

0

2021 年,我无法使其适用于 Office 365 ProPlus Publisher。

但是,对我来说,简单的解决方法是使用该.Overflowing属性(doc)。我只是缩小文本,直到溢出属性等于 0,这表明它没有溢出。

 Dim titleTextbox As Shape
 Set titleTextbox = ActiveDocument.Pages.Item(1).Shapes("My Textbox Name")
 
 Dim initialTextSize As Integer
 initialTextSize = titleTextbox.textFrame.TextRange.Font.Size

 While (titleTextbox.textFrame.Overflowing < 0)
    initialTextSize = initialTextSize - 1
    titleTextbox.textFrame.TextRange.Font.Size = initialTextSize
 Wend

相反,如果您想增加文本,则增加 while 循环中的大小而不是减小它。然后一旦溢出,退出循环并将大小减一。

另外,我找不到 的文档pbTextAutoFitGrowToFit,所以如果你有它,如果你不介意,请分享。

我找到的这个资源https://docs.microsoft.com/en-us/office/vba/api/publisher.pbtextautofittype只显示三个, pbTextAutoFitBestFit, pbTextAutoFitNone, pbTextAutoFitShrinkOnOverflow.

AutoFitText希望有一天有人能弄清楚如何设置该属性。

于 2021-09-20T18:09:26.513 回答