Извлечь код VBA, связанный с макросом, прикрепленным к кнопке действий в PowerPoint

StackOverflow https://stackoverflow.com/questions/2888472

  •  04-10-2019
  •  | 
  •  

Вопрос

У меня около 25 презентаций PowerPoint, каждая как минимум 45 слайдов. На каждом слайде это вопрос с четырьмя возможными ответами и кнопкой справки, которая предоставляет подсказку актуально к вопросу. Каждый из ответов и кнопка справки - кнопка действия PowerPoint, которая запускает макрос.

Я пытаюсь перенести все вопросы / ответы / намеки в базу данных SQL. Я работал с Office.inerop до того, как при работе с Excel и Word, и у меня есть много опыта SQL DB, поэтому я не предвижу какие-либо проблемы с фактически извлечения текстовой части вопроса и ответа и помещают его в БД.

То, что я понятия не имею, как сделать, это дает объект на слайд -> получить кнопку действия info -> Получить имя макроса -> и, наконец, получите код VB Macro. Оттуда я могу выяснить, как разбирать, какой правильный ответ и какой текст подсказки.

Любая помощь / идеи были бы очень оценены.

Это было полезно?

Решение

Чтобы получить имя ваших товаров, запустите настройки макроса, вы запускаете что-то вроде этого:

Sub ActionSettingName()
    Dim p As Presentation
    Set p = ActivePresentation
    Dim s As Slide
    Dim sh As Shape
    Dim macroName As String
    For Each s In p.Slides
        For Each sh In s.Shapes
            If sh.Type = msoGroup Then
                Dim gs As Shape
                For Each gs In sh.GroupItems
                    PrintMacroName gs
                Next
            Else
                PrintMacroName sh
            End If
        Next
    Next
End Sub
Sub PrintMacroName(sh As Shape)
    If sh.ActionSettings(ppMouseClick).Action = ppActionRunMacro Then
        macroName = sh.ActionSettings(ppMouseClick).Run
        Debug.Print macroName
    End If
End Sub

ОБНОВИТЬ: Чтобы получить действия для Textranges, пожалуйста, найдите ниже:

Sub ActionSettingName()
    Dim p As Presentation
    Set p = ActivePresentation
    Dim s As Slide
    Dim sh As Shape
    For Each s In p.Slides
        For Each sh In s.Shapes
            Dim tr As TextRange
            Set tr = sh.TextFrame.TextRange
            Dim macroName As String
            For i = 1 To tr.Runs.Count
                macroName = tr.Runs(i).ActionSettings(ppMouseClick).Run
                If Len(macroName) > 0 Then
                    Dim runText As String
                    runText = tr.Runs(i).Text
                    Debug.Print "RUN: " & runText & vbCrLf & "MACRO: " & macroName
                End If
            Next
        Next
    Next
End Sub

Тогда вы захотите искать и извлечь этот макрос (и все остальное вам нужно) от VBE внутри последнего для / следующего цикла.

Есть а несколько ссылок на так О том, как извлечь все макросы в Excel / Word и работать с моделью VBPROJECT - методы идентичны PowerPoint. Видеть Программно извлечь код Macro (VBA) из Docs Word 2007 Для одного из лучших примеров. Существует гораздо более полное введение объекта VBPROJECT объекта Программирование редактора VBA.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top