提取与PowerPoint中附加到操作按钮的宏关联的VBA代码
-
04-10-2019 - |
题
我有大约25个PowerPoint演示文稿,每个演示文稿至少有45张幻灯片。在每张幻灯片上都是一个问题,上面有四个可能的答案和一个帮助按钮,提供了与问题相关的提示。每个答案和帮助按钮都是启动宏的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
更新: 要获取Textranges的Actionettings,请在下面找到:
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相同。看 从Word 2007文档中提取宏(VBA)代码 对于更好的例子之一。 VBProject对象模型的更全面的介绍存在于 编程VBA编辑器.
不隶属于 StackOverflow