如何使用宏自动更新Publisher中OLEObjects链接的过程?我已经找到了一些关于如何执行此操作的讨论(主要是在PowerPoint中),并且在尝试将其应用于2010 Publisher文档时遇到了一些问题。
首先,当我在消息框中显示.LinkFormat.SourceFullName时,当我通过菜单选项编辑文件链接时,对Excel工作表或对象的引用都不会像在对话框中那样显示。
其次,当我尝试简单地更改显示为.SourceFullName的文件名时,我收到一条编译错误消息,指出我无法分配给只读属性。
对此的任何帮助将不胜感激。
当我应用以下代码时,在尝试分配新链接名称时出现编译错误。如果我注释掉.SourceFullName = newlinkname行,我会收到消息框,告诉我我有Edit和Open ObjectVerbs可用,并且显示的链接名只包含“C:\ Desktop \ Projects \ old.xlsx”。当我通过功能区使用“编辑链接到文件”命令时,它不显示我看到链接到对象的工作表和图表引用。在那里,对话框实际显示:
old.xlsx!H_A_CurrStat_byYrDxBar![old.xlsx] H_A_CurrStat_byYrDxBar图表1
我想使用宏将源名称从old.xlsx更改为new.xlsx,然后更新链接的对象。
Option Explicit
Sub links()
Dim linkname As String
Dim newlinkname As String
Dim shpShape As Shape
Dim intCount As Integer
newlinkname = "C:\Desktop\Projects\new.xlsx"
For Each shpShape In ActiveDocument.Pages(1).Shapes
shpShape.OLEFormat.Activate
With shpShape.OLEFormat
For intCount = 1 To .ObjectVerbs.count
MsgBox .ObjectVerbs(intCount)
Next
End With
With shpShape.LinkFormat
linkname = .SourceFullName
'.SourceFullName = newlinkname
MsgBox linkname
End With
shpShape.LinkFormat.Update
Next
End Sub
答案 0 :(得分:0)
https://msdn.microsoft.com/en-us/library/office/ff940537.aspx?f=255&MSPPError=-2147217396
此激活所有对象的代码可能有所帮助:
Sub ActivateOLEObjects()
Dim shpShape As Shape
For Each shpShape In ActiveDocument.Pages(1).Shapes
If shpShape.Type = pbLinkedOLEObject Then
shpShape.OLEFormat.Activate
End If
Next
End Sub
或者甚至更好,这个用于更新链接的示例代码: https://msdn.microsoft.com/en-us/library/office/ff939544.aspx
Sub FindOLEObjects()
Dim shpShape As Shape
For Each shpShape In ActiveDocument.Pages(1).Shapes
If shpShape.Type = pbLinkedOLEObject Then
shpShape.LinkFormat.Update
End If
Next shpShape
End Sub
如果两者都没有帮助,请提供更多信息,例如示例文件或您当前的代码