VBA powerpoint Зачеркивание одного слова

У меня есть файл powerpoint с несколькими листами. На этих листах находятся текстовые поля с текстами. Некоторые слова зачеркнуты. Я хотел бы составить список всех слайдов, где существует слово, которое зачеркнуто. Я пытался использовать функцию: If objShape.TextFrame2.TextRange.Font.Strikethrough = True Then

Проблема в том, что это становится правдой только тогда, когда первое слово зачеркнуто. Итак, Hello jaja, функция работает. Hallo jaja  функция не работает У кого-нибудь есть решение для этого?


person Menno    schedule 06.12.2017    source источник
comment
Извините, зачеркивание не работает в этом редакторе.   -  person Menno    schedule 06.12.2017
comment
Hallo jaja : Функция работает (теперь Hallo зачеркнут). Hallo jaja: функция не работает (сейчас jaja зачеркнута)   -  person Menno    schedule 06.12.2017


Ответы (2)


Попробуйте .TextRange2 вместо .TextRange с Шрифтом.Зачеркнутый :

Пример:

Sub ST() 
    With ActiveWindow.Selection 
        .TextRange2.Font.Strikethrough = msoTrue 
        .TextRange2.Font.Fill.ForeColor.RGB = vbRed 
    End With 
End Sub 

Ниже приведен (неполный) список различий в обработке двух типов свойств:

| TextRange Property    | TextRange Return Type | TextRange2 Property                        | TextRange2 Return Type |
|-----------------------|-----------------------|--------------------------------------------|------------------------|
| ActionSettings        | ActionSettings        | -                                         | -                     |
| Application           | Application           | Application                                | Application            |
| BoundHeight           | Single                | BoundHeight                                | Single                 |
| BoundLeft             | Single                | BoundLeft                                  | Single                 |
| BoundTop              | Single                | BoundTop                                   | Single                 |
| BoundWidth            | Single                | BoundWidth                                 | Single                 |
| (Characters method)   | (TextRange)           | Characters                                 | TextRange2             |
| Count                 | Long                  | Count                                      | Long                   |
| -                    | -                    | Creator                                    | Long                   |
| Font                  | Font                  | Font                                       | Font2                  |
| IndentLevel           | Long                  | (Paragraph Format2 .IndentLevel propety)   | (Long)                |
| LanguageID            | Mso LanguageID        | LanguageID                                 | Mso LanguageID         |
| Length                | Long                  | Length                                     | Long                   |
| (Lines method)        | (TextRange)           | Lines                                      | TextRange2             |
| -                    | -                    | MathZones                                  | TextRange2             |
| Paragraph Format      | Paragraph Format      | Paragraph Format                           | Paragraph Format2      |
| (Paragraphs method)   | (TextRange)           | Paragraphs                                 | TextRange2             |
| Parent                | Object                | Parent                                     | Object                 |
| (Runs method)         | (TextRange)           | Runs                                       | TextRange2             |
| (Sentences method)    | (TextRange)           | Sentences                                  | TextRange2             |
| Start                 | Long                  | Start                                      | Long                   |
| Text                  | String                | Text                                       | String                 |
| (Words method)        | (TextRange)           | Words                                      | TextRange2             |
|                       |                       |                                            |                        |

Больше информации:

person ashleedawg    schedule 06.12.2017

Поскольку только НЕКОТОРЫЙ текст в текстовом поле может быть подчеркнут, вам нужно просмотреть коллекцию .Runs для каждой фигуры, содержащей текст, чтобы извлечь только зачеркнутый текст. Вот начало:

Sub ListStrikeThroughText()
' This will list the struck-through text from Slide 1
' Adapt as needed to collect all of the text from all slides

Dim sTextList As String
Dim oShp As Shape
Dim oRng As TextRange2
Dim x As Long

With ActivePresentation.Slides(1)
    For Each oShp In .Shapes
        If oShp.HasTextFrame And oShp.TextFrame2.HasText Then
            With oShp.TextFrame2.TextRange
                For x = 1 To .Runs.Count
                    If .Runs(x).Font.Strikethrough Then
                        sTextList = sTextList & .Runs(x).Text & vbCrLf
                    End If
                Next
            End With

        End If
    Next
End With

MsgBox sTextList

End Sub
person Steve Rindsberg    schedule 06.12.2017