我在 Powerpoint 中使用 VBA 查找文本中的样式,然后用 HTML markdown 标签包装该文本。下面是我尝试用来查找的代码加粗字体然后将其包裹起来<b>bold text</b>
。
不幸的是,代码似乎返回布尔值,而不是文本范围。
我究竟做错了什么?
With oSh.TextFrame.TextRange
For x = 1 To .Paragraphs.Count
With .Paragraphs(x)
Debug.Print "Paragraph: " & x
For y = 1 To .Runs.Count
If .Runs(y).Font.Bold Then
.Runs(y).Font.Bold = "<b>" & .Runs(y).Font.Bold & "</b>"
End If
Next
End With
Next
End With
答案1
就像这样...这将与当前选定的形状一起工作;将你喜欢的任何内容分配给 oSh,只要它有文本:
Sub EmboldenAndItalicize()
Dim oSh As Shape
Dim x As Long
Set oSh = ActiveWindow.Selection.ShapeRange(1)
With oSh.TextFrame.TextRange
For x = 1 To .Runs.Count
If .Runs(x).Font.Bold Then
.Runs(x).Text = "<b>" & .Runs(x).Text & "</b>"
End If
Next
For x = 1 To .Runs.Count
If .Runs(x).Font.Italic Then
.Runs(x).Text = "<i>" & .Runs(x).Text & "</i>"
End If
Next
End With
End Sub
形状的 TextRange 具有 Runs 集合;如果文本中没有格式更改,则 Runs 集合将只有一个成员;否则,每次格式更改都会有一个新的 Runs 成员。