4

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

损坏的超链接

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

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

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

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

4

1 回答 1

4

我可以重现奇怪的行为。这可能对您更有效。我已将其更改为显式 DIM 所有变量(通常是良好做法),并使用 Longs 而不是 Integers,因为这是 PPT 在内部使用的。接下来,显然更改 Displayed Text 也会更改或删除超链接(有时但并非总是如此?很奇怪!)。这会抛出你的循环计数器。所以相反,对于每个超链接,我存储了它的子地址,对文本进行了任何更改,然后重新应用了子地址。

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
于 2012-11-02T15:27:11.633 回答