Como assim ... isso funcionará com a forma atualmente selecionada; atribua o que você quiser a oSh, desde que tenha texto:
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
O TextRange de uma forma tem uma coleção Runs; se não houver alteração de formatação no texto, a coleção Runs terá apenas um membro; caso contrário, há um novo membro Runs para cada alteração de formatação.