PowerPointのアクションボタンに接続されたマクロに関連付けられたVBAコードを抽出します
-
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エディターのプログラミング.