更改现有文本框形状的字体大小

Change fontSize of an existing TextBox Shape

我的 Word 文档中有一个文本框,其文本通过 MailMerge 自动填充 -(下图中的 <<FinalName>>)。

TextBox 的形状名称是 namebox(我从 主页 > 编辑 > 选择窗格得到这个)

我想知道是否可以更改此特定文本框的字体大小 - 默认情况下文本框的 fontSize11,我应该减少它到 10,这取决于变量的字符长度(如果它是否超过 32 个字符),因此它可以更容易地适应更长的文本。

我尝试自己构建一些代码,但在 namebox 字上出现 'variable not defined' 的编译错误。

这是我插入文本框的地方:

Dim caName As String
Dim nameLen As Integer
caName = .DataSource.DataFields("Final Display Name").Value
nameLen = Len(caName)

If nameLen < 32 Then
    namebox.Font.Size = 10 'error - namebox variable is not defined
Else
    namebox.Font.Size = 11 'practically nothing changes here
End If

如您所见,caName 的值取自 DataSource - 此 DataSource 也链接到 MailMerge,因此值将相同。

我看过各种例子,但大多数例子都是创建一个新的文本框,而不是使用现有的文本框。如何更改现有文本框形状的字体大小?请指导...谢谢! :)

那个“文本框”实际上是一个带有 TextFrame 的 Shape。您可以按名称获取形状对象并通过这种方式更改其字体大小(TextRangeTextFrame):

Sub Test
    Dim ShapeName As String
    ShapeName = "namebox" ' change this to the name of your shape

    ActiveDocument.Shapes(ShapeName).TextFrame.TextRange.Font.Size = 30

    ' to get the text that is in it...
    MsgBox ActiveDocument.Shapes(ShapeName).TextFrame.TextRange.Text
End Sub

TextFrame object (Word)

如果您不确定要使用的名称,请使用以下命令立即 window 打印形状名称列表:

Sub ShowListOfShapes()
    Dim shp as Shape
    For Each shp In ActiveDocument.Shapes
        Debug.Print shp.Name
    Next
End Sub