Я хочу преобразовать таблицу в слайде Powerpoint в HTML. Я знаю, как вставлять теги таблиц, но не могу понять, как преобразовать форматированный текст внутри ячеек таблицы в HTML. Так, например, как мне преобразовать "Это ячейка ссмелыйтекст" на "Это ячейка с <b>жирным</b> текстом"?
Мне нужно иметь возможность делать это для жирного, курсивного и цветного текста (и, в идеале, для размера шрифта и семейства шрифтов). На самом деле я не хочу менять ячейку таблицы PowerPoint, а просто собрать строку html, которую я сохраню вjsonобъект.
Я знаю, как это сделать в Word, установивСлово.диапазони используяНаходитьметод. Но мне не удалось повторить это в PowerPoint.
решение1
Каждый TextRange имеет коллекцию Runs. Если весь текст в диапазоне отформатирован одинаково, в коллекции будет только один Run.
Если шрифт/размер/цвет/жирность изменятся в процессе, коллекция Runs будет увеличена.
Доступ к каждому Run в коллекции дает вам TextRange, свойства шрифта которого вы можете изучить. Предположим, например, что у вас есть текст, как этот (все в одной форме)
Этот текст отформатирован одинаково. Этот текст включает немногожирныйтекст.
Sub thing()
Dim oSh As Shape
Dim oRng As TextRange
Dim x As Long
Dim y As Long
' Assume that the shape with your text is selected
Set oSh = ActiveWindow.Selection.ShapeRange(1)
' You can look at the text in the shape as a whole,
' or paragraph by paragraph or line by line or character by character.
' Let's do it para by para
With oSh.TextFrame.TextRange
For x = 1 To .Paragraphs.Count
With .Paragraphs(x)
Debug.Print "Paragraph: " & x
For y = 1 To .Runs.Count
Debug.Print vbTab & "Run: " & y
Debug.Print .Runs(y).Font.Bold
Next
End With
Next
End With
End Sub
Абзац: 1 Прогон: 1 0 Абзац: 2 Прогон: 1 0 Прогон: 2 -1 Прогон: 3 0
Первый абзац имеет только 1 прогон, поскольку весь текст отформатирован одинаково. 0 = НЕ полужирный.
Во втором абзаце 3 отрывка (по одному для каждого символа, который отформатирован иначе, чем предыдущий символ). NotBold, BOLD, NotBold