第一篇文章在这里,希望我做对了。
上下文::我正在尝试回收2018模板以插入2019数据。该模板由多个受保护的数据表(由他人设置密码)和多个不受保护的图形表组成。这些图形当前引用相关的2018年数据表。
为了摆脱保护,我克隆了(通过复制Pastespecial xlPasteall)受保护的工作表。我的代码的一部分(下面工作且未进行开发)包括创建一个新工作表,从源中复制/粘贴数据,并使用源工作表名称+后缀重命名工作表。最终,该代码还将在过时的情况下处理源工作表的破坏。
copySheet是2018数据源,unlockedSheet是2019数据源。生成克隆表时没有问题,克隆都不会从copySheet.name和“ suffix”组合继承名称。
目标:我正在尝试使所有图形均参考克隆表。我希望在所有图形源数据中将=“ nameOfTheSource”![range]替换为=“ nameOfTheClone”![same range]。
如此,我试图创建一个宏来查找和替换源数据中的图纸引用,但是我很难操纵ole对象的属性。这是代码:
Sub Copy2018()
Dim copySheet As Object, unlockedSheet As Object, graphSheet As Object, graph As OLEObject
For Each graphSheet In Sheets
For Each graph In graphSheet.OLEObjects
If graph.OLEType = xlOLELink Then
graph.SourceName = Replace(SourceName, copySheet.Name, unlockedSheet.Name)
End If
Next graph
Next
代码运行无错误,但不执行任何操作。正如我提到的,最终将有多个源和图形必须从正确的源中选择,但我认为使用“克隆名=源名+后缀”系统,我可以处理它。
不是主题,而是我使用的另一种方法:可能有其他选择,例如:
但是我也没有这种结果。我真的以为我使用的Ole对象属性错误,因为我知道这两个选项都适用于单元格中的公式。
如果有任何疑问/其他方法,请不要犹豫。谢谢你的忙。
[UPDATE] 我经历过Jon Peltier方法,结果是相同的(代码运行无错误,但不执行任何操作)。在这两种情况下,我都试图一步一步地运行代码,似乎循环没有考虑嵌套函数的最后两行。一旦该对象被识别为图形/ ole对象,代码便会忽略这些行和循环而无所作为。