我有大约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编辑器.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top