PowerPointのアクションボタンに接続されたマクロに関連付けられたVBAコードを抽出します

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

  •  04-10-2019
  •  | 
  •  

質問

約25のPowerPointプレゼンテーションがあり、それぞれが少なくとも45個のスライドがあります。各スライドには、4つの可能な答えがある質問と、質問に関連するヒントを提供するヘルプボタンがあります。各回答とヘルプボタンは、マクロを起動するPowerPointアクションボタンです。

すべての質問/回答/ヒントをSQLデータベースに移行しようとしています。 ExcelとWordを使用する前にOffice.Interopで作業したことがありますが、SQL DBの経験がたくさんあるので、質問と回答のテキスト部分を実際に抽出してDBに入れるという問題は予測しません。

方法がわからないのは、スライドにオブジェクトが与えられる - >アクションボタン情報を取得 - >マクロ名 - >を取得し、最後にマクロのVBコードを取得します。そこから、どちらが正しい答えであり、ヒントのテキストが何であるかを解析する方法を理解できます。

どんな助け/アイデアも大歓迎です。

役に立ちましたか?

解決

アイテムの名前をマクロ設定を実行するには、次のようなものを実行します。

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

アップデート: テキストランジのアクションセットを取得するには、以下をご覧ください。

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からそのマクロ(および必要なもの)を検索して抽出することをお勧めします。

あります SOのいくつかの参照 Excel/Wordですべてのマクロを抽出し、VBProjectモデルで動作する方法について - 手法はPowerPointと同じです。見る Word 2007ドキュメントからプログラムでマクロ(VBA)コードを抽出する より良い例の1つ。 VBProjectオブジェクトモデルのはるかに包括的なイントロが存在します VBAエディターのプログラミング.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top