Определите тип художественного слова в PowerPoint 2010

Мне нужно знать, выбрана ли форма слова искусство или нет.

Shape имеет свойство " Type" (возвращает перечисление MsoShapeType). Когда я вставляю слово art и проверяю это свойство - оно возвращает msoAutoShape вместо msoTextEffect (с AutoShapeType==msoShapeRectangle).

Как я могу проверить, что spae - это слово art (не обычный прямоугольник с текстовым полем)?

Спасибо!

1 ответ

Решение

Если вы выберете либо общую форму Smartart, либо щелкнете по тексту внутри формы Smartart, либо выберете одну из фигур в Smart Art, ActiveWindow.Selection.ShapeRange(1) вернет форму Smartart.

Так

If ActiveWindow.Selection.ShapeRange(1).HasSmartArt Then
   Debug.Print "It's smart art"
End if

[отредактировано] Но, как вы указали, это для Smartart, а не слова искусства. Моя ошибка, извините. Нет формы WordArt как таковой; это больше похоже на любую фигуру, в которой форматирование WordArt применено к фигуре в целом или к тексту внутри фигуры. Это может включать форматирование, например свечение, отражение, тень и т. Д., Или это может быть одна из предустановок WordArt, предварительно выбранные комбинации этих различных эффектов. Я добавил пример, который поможет идентифицировать фигуры или диапазоны текста внутри фигуры, к которым применены эти предварительные настройки. Я не вижу простого способа проверки пользовательских форматов WordArt, кроме просмотра каждого прогона и каждого текстового поля для каждого из различных свойств (свечение, отражение и т. Д.), Которые могут быть применены. К сожалению, нет WordArtFormat = None, чтобы сказать нам, что мы можем игнорировать это. Это будет либо предустановка, либо -2, что может означать любое из нескольких значений.

Sub WordArtist()

    Dim oSh As Shape
    Dim oRng As TextRange2

    ' Has word art formatting been applied to
    ' entire shape?
    Set oSh = ActiveWindow.Selection.ShapeRange(1)
    Debug.Print oSh.TextFrame2.WordArtFormat

    ' Has it been applied to individual chunks of
    ' text within the shape
    For Each oRng In oSh.TextFrame2.TextRange.Runs
        Debug.Print oRng.Font.WordArtFormat
    Next

    ' Note:
    ' A result of -2 for the entire shape could mean
    '   - No text in the shape; not really word art
    '   - Mixed formatting
    '   - Text/shape has had glow/shadow/reflection etc applied
    '     rather than one of the preset WordArt selections

End Sub
Другие вопросы по тегам