使用vba更新powerpoint中的超链接

时间:2013-08-27 15:59:24

标签: hyperlink powerpoint-vba

我必须知道什么幻灯片正在引用每个超链接。为此,我正在寻找ActivePresentation.Slides(sliNum).Hyperlinks(linkNum).SubAddress似乎有什么幻灯片正在引用链接。这里我把SubAddress的结果:“380,3,dink the company”

这里我真正需要的是昏迷之间的数字(在这种情况下是3)。当我在第三张幻灯片之前放置一个新幻灯片时出现问题。现在我想要的幻灯片是第4张,但SubAddress不会改变。我尝试使用ActivePresentation.UpdateLinks以及shape.LinkFormat.Update和shape.LinkFormat.AutoUpdate但没有任何工作,SubAddress仍然继续而不改变。

我放了代码的和平代码来找到链接引用:

   For Each s In ActivePresentation.Slides

        For i = 1 To s.Hyperlinks.count

          Dim cou As Integer
          Dim linkNumber As String
          le = Len(s.Hyperlinks(i).SubAddress)
          cou = InStr(s.Hyperlinks(i).SubAddress, ",")
          linkNumber = Mid(s.Hyperlinks(i).SubAddress, cou + 1, InStrRev(s.Hyperlinks(i).SubAddress, ",") - (cou + 1))

On Resume我需要以某种方式更新SubAddress,否则如果有人知道另一种方式知道引用的位置,那么超链接也会很棒。我使用的链接类型是msoHyperlinkRange

1 个答案:

答案 0 :(得分:1)

当PPT首次创建超链接时,它将子地址设置为SlideID,SlideIndex,幻灯片标题

如果稍后移动幻灯片,或者幻灯片标题发生更改,则可能会使后两位信息无效,但幻灯片的SlideID永远不会更改,因此如果有疑问,PPT会使用该幻灯片。

这样可以保证链接正常工作,至少在PPT中如此,但其他(错误地)依赖SlideIndex进行链接的程序会遇到麻烦。

您可以通过解析SlideID(作为字符串)来学习当前的SlideIndex,然后:

SlideIndex = ActivePresentation.Slides.FindBySlideID(CLng(sSlideID))