编辑超链接(x).texttodisplay将超链接移动到PowerPoint中文本框的开头

时间:2012-11-02 10:55:05

标签: vba hyperlink powerpoint

我在PowerPoint中遇到VBA问题 - 当我尝试编辑超链接的TextToDisplay属性时,它会编辑文本,但会将超链接位置移动到文本框的开头。

broken hyperlinks

在第一遍中,我将文本框的第一个字符更改为链接,然后在第二遍中,该链接被重写。

当幻灯片移动时,我正在使用以下代码更新超链接的页码。

Sub UpdatePageNumbers()

For Each sld In ActivePresentation.Slides
    For x = CInt(sld.Hyperlinks.Count) To 1 Step -1
        strParts = Split(sld.Hyperlinks(x).SubAddress, ",")
        PageNumber = ActivePresentation.Slides.FindBySlideID(CInt(strParts(0))).SlideNumber
        sld.Hyperlinks(x).TextToDisplay = "Page " & PageNumber
    Next
Next

End Sub

有没有人见过这个/想出解决方案?有搜索,找不到任何东西。

1 个答案:

答案 0 :(得分:3)

我可以重复这种奇怪的行为。这对你来说可能更好。我已将其更改为显式DIM所有变量(一般的好习惯),并使用Longs而不是Integers,因为这是PPT内部使用的。接下来,显然更改显示的文本也会更改或删除超链接(有时但不总是?很奇怪!)。这会抛弃你的循环计数器。因此,对于我存储其子地址的每个超链接,对文本进行了任何更改,然后重新应用子地址。

Sub UpdatePageNumbers()

Dim sld As Slide
Dim x As Long
Dim strParts
Dim PageNumber As Long
Dim oHl As Hyperlink
Dim oTxtRange As TextRange
Dim sSubaddress As String

For Each sld In ActivePresentation.Slides
    'For x = CLng(sld.Hyperlinks.Count) To 1 Step -1
    For Each oHl In sld.Hyperlinks
        With oHl
            sSubaddress = .SubAddress
            strParts = Split(.SubAddress, ",")
            PageNumber = ActivePresentation.Slides.FindBySlideID(CLng(strParts(0))).SlideNumber
            'oHl.TextToDisplay = "Page " & PageNumber
            Set oTxtRange = .Parent.Parent
            oTxtRange.Text = "Page " & PageNumber
            oTxtRange.ActionSettings(1).Hyperlink.SubAddress = sSubaddress
        End With
    Next
Next

End Sub