爲了讓您的項目的名稱運行宏設置,你會遇到這樣的事情:
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:要獲取TextRanges ActionSettings,請看下面:
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
然後,您需要從最後一次For/Next循環內的VBE中搜索並提取該宏(以及其他任何您需要的內容)。
有一個few references on SO關於如何提取Excel/Word中的所有宏並使用VBProject模型 - 這些技術與PowerPoint完全相同。有關更好的示例,請參見Programmatically extract macro (VBA) code from Word 2007 docs。在Programming The VBA Editor上存在一個更全面的VBProject對象模型介紹。
所以我想對於一個「正常」的情況,這將工作的偉大......我能夠用上面的方法爲線索提取宏的名稱,因爲它是自己單獨的操作按鈕。出於某種原因,問題和答案都是相同的形狀(文本塊)...所有的答案也是行動按鈕。我不確定這是如何工作的,有4個動作按鈕,都是鼠標點擊的形狀。我嘗試查詢幻燈片上的所有圖形,以確保它們不會隱藏在其他地方,但我找不到它們。有任何想法嗎? – Peter 2010-05-27 01:25:54
@Patricker:這就是我的想法 - 這些動作按鈕與文本框分組在一起。我已經更新了上面的代碼,這將有助於獲得分組形狀的運行宏。 – 2010-05-27 04:44:37
@Otaku ...看起來不像那樣。以下是重現我的確切問題的步驟:1)創建一個新的演示文稿。在文本框中輸入三行文字。 2)在演示文稿中添加一個宏。 3)在文本框中選中其中一行文本,然後轉到功能區上的插入選項卡,然後選擇「操作」。 4)選擇宏選項,然後從列表中選擇宏。 5)爲第三行重複此步驟(將第二行保留爲普通文本)。現在讓vba看到動作... – Peter 2010-05-28 03:01:14