Extrahieren Sie den VBA-Code im Zusammenhang mit einem Makro an eine Aktionstaste in Powerpoint

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

  •  04-10-2019
  •  | 
  •  

Frage

Ich habe etwa 25 Powerpoint-Präsentationen, die jeweils mit mindestens 45 Dias. Auf jeder Folie ist eine Frage mit vier möglichen Antworten und einer Hilfe-Taste, die einen Hinweis für die Frage stellt. Jede der Antworten und die Hilfe-Taste ist eine Powerpoint-Aktionstaste, dass startet ein Makro.

Ich versuche, alle Fragen / Antworten / Hinweise in eine SQL-Datenbank zu migrieren. Ich habe mit Office.Interop gearbeitet, bevor, wenn sie mit Excel und Word arbeiten, und ich habe viele SQL DB Erfahrung, so sehe ich keine Probleme mit tatsächlich dem Textteil der Frage und Antwort zu extrahieren und sie in den db setzen.

Was habe ich keine Ahnung, wie ein Objekt auf einer Folie zu tun gegeben -> erhalten die Info Aktionstaste -> Holen Sie sich das Makroname -> und endlich das vb Code des Makros. Von dort aus kann ich herausfinden, wie aus zu analysieren, welche die richtige Antwort ist und was der Text des Hinweises ist.

Jede Hilfe / Ideen würden sehr geschätzt werden.

War es hilfreich?

Lösung

Um den Namen erhalten Ihrer Artikel Makro-Einstellungen starten, werden Sie etwas wie folgt aus:

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

UPDATE: Um ActionSettings für TextRanges, bitte unten finden:

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

Dann werden Sie wollen für und Extrakt suchen, dass Makro (und alles, was Sie brauchen) von der VBE innerhalb der letzten For / Next-Schleife.

Es gibt ein wenige Hinweise auf SO , wie alle Makros in Excel / Word-extrahieren und die Arbeit mit der VBProject Modell - die Techniken zu Powerpoint identisch sind. Siehe Programmatically Extrakt Makro (VBA) Code aus Word 2007-Dokumente für eines der besseren Beispiele. Eine viel umfassenderen Einführung in das VBProject Objektmodell existiert unter Programmierung Der VBA-Editor .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top