使用 VBA 将超链接和文本添加到 PowerPoint 中的演讲者备注部分

Adding hyperlinks and text to speaker notes section within PowerPoint using VBA

我正在尝试遍历 PowerPoint 中的所有幻灯片,并为链接添加关联文本,并将完整超链接添加到注释部分。

我已经成功地做到了这一点,但现在我得到一个“运行 时间错误‘-21247188160 (80048240)’。在我的研究中,人们建议添加一个 timer/DoEvent到循环部分中的代码,因为它可能会遇到一些问题。不幸的是,那没有用。

有什么想法吗?

Sub AddHyperlinksWithNameToNotes()

   Dim vSlide As Slide
   Dim vHyperlink As Hyperlink
   Dim sLinks As String
   Dim vShape As Shape
   
   
    For Each vSlide In ActivePresentation.Slides
        For Each vHyperlink In vSlide.Hyperlinks
            sLinks = sLinks _
                & vHyperlink.TextToDisplay _
                & ": " & vHyperlink.Address _
                & vbCrLf
        Next
        vSlide.NotesPage.Shapes(2).TextFrame.TextRange = ""
        vSlide.NotesPage.Shapes(2).TextFrame.TextRange.Text = sLinks
        sLinks = ""
    Next
End Sub

谢谢!

如文档中所写,PP 中的超链接可能有两种类型:msoHyperlinkRange 和 msoHyperlinkShape - 请参阅 https://docs.microsoft.com/ru-ru/office/vba/api/powerpoint.hyperlink.type。所以 msoHyperlinkShape 的超链接没有 TextToDisplay.

尝试检查 vHyperlink.Type:

Sub AddHyperlinksWithNameToNotes()

    Dim vSlide As Slide
    Dim vHyperlink As Hyperlink
    Dim sLinks As String
    Dim vShape As Shape
    
    For Each vSlide In ActivePresentation.Slides
        For Each vHyperlink In vSlide.Hyperlinks
            
            If vHyperlink.Type = msoHyperlinkRange Then ' check type
                ttd = vHyperlink.TextToDisplay
            Else
                ttd = "LinkOnShape"
            End If
            
            sLinks = sLinks _
                & ttd _
                & ": " & vHyperlink.Address _
                & vbCrLf
        Next
        vSlide.NotesPage.Shapes(2).TextFrame.TextRange = ""
        vSlide.NotesPage.Shapes(2).TextFrame.TextRange.Text = sLinks
        sLinks = ""
    Next
End Sub