2013-08-27 84 views
0

我必須知道什麼幻燈片正在引用每個超鏈接。爲此,我正在查看ActivePresentation.Slides(sliNum).Hyperlinks(linkNum).SubAddress看起來是什麼幻燈片引用鏈接。在這裏,我把SubAddress的結果:「380,3,dink the company」使用vba更新powerpoint中的超鏈接

這裏我真正需要的是介於昏迷之間的數字(在這種情況下是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)) 

在恢復,我需要以某種方式更新子地址或其他方式,如果有人知道另一種方式來知道哪裏是參考的超級鏈接也會很棒。我使用的鏈接類型是msoHyperlinkRange

回答

0

當PPT首先創建它設置子地址SlideID,SlideIndex超鏈接,幻燈片標題

如果幻燈片後來移動,或幻燈片標題的變化,可以無效後兩位信息,但幻燈片的幻燈片永遠不會改變,所以如果有疑問,PPT會使用它。

這會保持鏈接正常工作,至少在PPT中,但其他程序(錯誤地)依賴於SlideIndex進行鏈接會遇到麻煩。

,您可以瞭解通過解析出SlideID(字符串)當前SlideIndex然後:

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