Я использую VBA в Powerpoint, чтобы найти стили в тексте, а затем обернуть этот текст тегами уценки HTML. Ниже приведен код, который я пытаюсь использовать, чтобы найти жирный текст, а затем обернуть его в <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 ответ1

0

Вот так ... это будет работать с текущей выбранной формой; присвойте все, что вам нравится 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .