目标:调整PowerPoint中单个文本框中单词组的字体大小。
详:
我有两个列表:
Labels = ["Mahon Point Retail","Park","Blackpool Drive","Balance","Finglas Point"]
FontSize = [10,23,15,20,40]
我想通过索引将 FontSize 中的字体大小应用于标签中的标签。
我的脚本:
#add all items in Labels to a single textbox
for i, label in enumerate(labels):
Shape.TextFrame.TextRange.Text += " " + label
#apply font size from FontSize list to its corresponding label
for x, num in enumerate(FontSize, 1):
Shape.TextFrame.TextRange.Words(x).Font.Size = int(num)
问题:
我相信问题在于使用"Words(x)"属性,有什么方法可以定义单词是什么?它把"Mahon Point Retail"当作三个词,但我想把它当作一个词。
无法帮助 Python 部分,但您可能可以调整此 VBA 以执行您想要的操作。首先是一个函数,用于为任何子字符串设置所需的格式,然后是一个测试子例程。这只会更改字符串中单词的第一个实例。 从测试较大字符串中是否存在字符串的循环中重复调用它可以解决这个问题。
Function FontTheWords(oSh As Shape, sWords As String)
Dim oRng As TextRange
' Get a range object representing the chosen words
Set oRng = oSh.TextFrame.TextRange.Characters(InStr(oSh.TextFrame.TextRange.Text, sWords), Len(sWords))
Debug.Print oRng.Text
' format the range in whatever way you like
With oRng.Font
.Bold = True
.Color.RGB = RGB(255, 0, 0)
End With
End Function
Sub TestIt()
FontTheWords ActiveWindow.Selection.ShapeRange(1), "Blackpool Drive"
End Sub