0

我正在处理带有一堆嵌入式 PDF 的 word doc,我需要能够使用 VBA 宏激活它们。所以这就是我一直在做的事情:

ThisDocument.InlineShapes(appropriate_number).OLEFormat.Activate

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

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

4

1 回答 1

1

您可以使用该AlternativeText属性来引用内联形状。如果 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
于 2012-09-15T04:22:41.447 回答