(Excel错误?)避免在Excel生成的所有PDF页面上重复超链接命中区域

时间:2014-11-25 07:42:38

标签: excel-vba pdf vba excel

我在使用Excel 2007生成的PDF中发现了一些奇怪的东西。我需要在工作表上创建带有超链接的TextBox,设置重复的标题行以进行打印,然后将工作表导出为PDF。

这是发生了什么。 PDF的第一页将显示TextBox,并且可以按预期方式单击作为链接。但奇怪的是,所有后续页面都会在第一页与TextBox大致相同的位置具有可点击的区域,但绝对是什么都没有 - 即第二页显然是空白的,但页面上有一个空白的可点击的区域,它将打开第一页的TextBox链接。 期望。

以下是一些准确准备场景的代码:

    ' Run this procedure
Public Sub TestRepeatingHyperlinkHitArea()
    Call AddDummyContent
    Call CreateTextBoxWithHyperlink

    ActiveSheet.PageSetup.PrintTitleRows = ActiveSheet.Rows(1).Address
    Call ActiveSheet.ExportAsFixedFormat(xlTypePDF, _
        "RepeatingHyperlinkHitArea.pdf", OpenAfterPublish:=True)
End Sub

Public Sub AddDummyContent()
    ' Needed only to create multiple pages
    Call ActiveSheet.Cells.Clear
    Dim i As Integer
    For i = 1 To 300
        ActiveSheet.Cells(i, 1).Value = i
    Next i
End Sub

Public Sub CreateTextBoxWithHyperlink()
    If ActiveSheet.Shapes.Count = 1 Then
        Call ActiveSheet.Shapes(1).Delete
    End If

    Dim TB As Shape
    Set TB = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _ 
        100, 100, 150, 50)
    TB.TextFrame.Characters.Text = "I'm a textbox with a hyperlink"
    Call ActiveSheet.Hyperlinks.Add(TB, "http://www.example.com")
End Sub

将其粘贴到空白工作簿中并运行TestRepeatingHyperlinkHitArea()。它将准备ActiveSheet并创建PDF。在PDF中,用鼠标在第二页上进行搜索,在上半部分中会有一个链接的命中区域(第1页的相同链接),但没有任何可见的。

这可以避免吗?我真的不想在页面上使用鬼链接。它似乎只在设置ActiveSheet.PageSetup.PrintTitleRows时发生,并且只有第一页上的超链接作为鬼链重复。我假设超链接命中区域以某种方式呈现在与PrintTitleRows相同的层上。这很糟糕,因为它们在PDF中一起重复。

我尝试使用ActiveX标签作为超链接而不是普通的TextBox,因为它们没有出现这个问题(它们不会被渲染为Shapes?),但是在VBA中设置为超链接目标却很麻烦(无论我如何尝试将它们转换为Shapes,在ActiveX标签上调用ActiveSheet.Hyperlinks.Add()都会失败并显示错误。还在努力。

欢迎使用重复标题行在PDF中创建超链接的任何想法。

编辑:生成的PDF文件的Dropbox链接:https://www.dropbox.com/s/un1q81vgpvvg6w0/RepeatingHyperlinkHitArea.pdf?dl=0

0 个答案:

没有答案