【问题标题】:Easier way to refer to embedded PDFs?引用嵌入式 PDF 的更简单方法?
【发布时间】:2012-09-07 16:25:57
【问题描述】:

我正在编写包含大量嵌入式 PDF 的 word doc,并且我需要能够使用 VBA 宏激活它们。所以这就是我一直在做的事情:

ThisDocument.InlineShapes(appropriate_number).OLEFormat.Activate

但问题是,必须通过某个任意索引号来引用每个 pdf,这意味着如果我在几个预先存在的 PDF 之间插入另一个嵌入式 PDF,那么我的所有代码都可能会中断(因为要引用的索引号某些嵌入式 pdf 会发生变化)。

有没有更有效的方法在我的代码中引用嵌入的 PDF?

【问题讨论】:

    标签: vba pdf embed ms-word


    【解决方案1】:

    您可以使用AlternativeTextproperty 来引用内联形状。如果 PDF 以编程方式嵌入,请捕获每个 pdf 的文件名并将文件名分配给 AlternativeText

     NewShapeIndex = ActiveDocument.InlineShapes.Count + 1
     'Code to embed shape and capture filename of PDF
     ActiveDocument.InlineShapes(NewShapeIndex).AlternativeText = CapturedFilename
    

    (如果手动嵌入 PDF,请右键单击嵌入的 PDF 图标,选择“设置对象格式”,然后在每个文件的“替代文本”选项卡上的框中输入文件名。)

    然后使用InlineShapes集合根据文件名启动一个文件:

    Public Sub PDFindex(PDFname As String)
    
    Dim Myshape As InlineShape
    Dim IndexCount As Integer
    IndexCount = 1
    
    For Each Myshape In ActiveDocument.InlineShapes
    
        If Myshape.AlternativeText = PDFname Then
            ActiveDocument.InlineShapes(IndexCount).OLEFormat.Activate
        End If
        IndexCount = IndexCount + 1
    
    Next
    
    End Sub
    

    这样,只要知道文件名,就可以启动任何文件

     PDFindex filename
    

    【讨论】:

    • 完美!正是我需要的。非常感谢。
    猜你喜欢
    • 2018-02-07
    • 2013-06-14
    • 1970-01-01
    • 2011-04-08
    • 2013-02-23
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多