在Excel中删除幻影外部链接


24

我有一个带有一些外部链接的excel电子表格,我无法摆脱它。

我已经在互联网上阅读了很多文章,Microsoft建议以下内容

  • 对于单元格中的引用:使用搜索并替换[*]在工作表单元格中查找所有引用。
  • 对于名称中的引用:打开名称管理器并确保那里没有外部引用。
  • 对于对象中的引用(这确实很痛苦):分别选择每个对象,然后在编辑栏中查看。
  • 对于图表中的参考(同样痛苦):检查编辑栏上每个图表的标题和数据系列。

这仍然给我留下了我找不到的幻像外部参考,所以我尝试了更多的事情

  • Excel中的“数据-编辑链接”功能,然后单击“断开链接”(没有任何反应)
  • 使用了“ FindLink”插件(对我不起作用,但易于使用)
  • 使用过的Microsoft的DeleteLinks插件(也无法正常使用,使用起来也不友好)

阅读本文后,我也尝试了FindLink。它在状态栏上显示一条状态消息,标识正在搜索的工作表,并给了我一个沙漏,一个小时后,仍然没有任何变化。无法判断挂起还是非常缓慢。如此缓慢的循环需要进度指示器。按住Escape键并没有发生,这表明循环中没有DoEvents。最后,我终止了Excel。
格雷格·洛文

1
谢谢-您在问题中写的内容确实很有帮助,其他人也给出了答案。我注意到,在尝试一切之后,“编辑链接”框仍然显示链接,但是关闭并重新打开工作簿确实可以解决问题-链接都被删除了!
dunxd

Answers:


27

对于花费大量时间来整理其文件的其他人,如果您已从另一个工作簿复制了数据验证范围,则也可能存在该问题。

要解决这个问题 :

功能区->文件->检查问题->检查兼容性

这将显示检查器,该检查器将告诉您Validation是否指向外部工作表。

最重要的是,它会告诉您它在哪张纸上。

无论如何,一旦您知道工作表,就转到工作表。现在

功能区->主页->查找和选择旁边的向下箭头->数据验证。

这将选择应用了数据验证的单元格。

现在

功能区->数据->数据验证

并在“源”字段中修复损坏的引用,如果不需要,请单击“全部清除”。


对于Mac上的计算机(我在Excel v15.37上),此页面上的宏(dailydoseofexcel.com/archives/2009/05/04/…)可以在数据验证中查找链接。复制和粘贴后,您可能必须修复所有引号。
KJH

我从没想过断开的链接会隐藏在数据验证中。谢谢!!!
肖恩·麦卡锡,

12

最后,我将其追溯到条件格式化规则。

单击“主页-条件格式-管理规则”,将弹出以下对话框,相对容易浏览和替换外部引用。

在此处输入图片说明


这次真是万分感谢。它意外进入并让我发疯!
格雷格·里昂

1
另一个要检查的地方是“定义的名称”(公式->名称管理器)
lsowen

2
我有一个具有数百种条件格式的电子表格,并且规则未显示它在引用外部文件。我只是通过将.XLSX重命名为.ZIP,打开file.zip \ xl \ worksheets \ sheet1.xml,搜索文件路径并注明单元格位置,然后使用规则管理器来查找和删除它们来找到它们的。您可以复制文件,然后删除所有规则,保存,关闭并重新打开以隔离该工作表/标签是否引起了您的问题。参考:superuser.com/a/957178/160219 superuser.com/a/1081277/160219 superuser.com/a/1134500/160219
gregg

就我而言,没有发布的解决方案对我有用。最终,我通过消除过程发现了一张带有一堆相同的表单按钮的工作表,它们全部堆叠在一起,并分配给外部工作簿。这是由于用户从另一个工作簿复制工作表。整个下午都浪费了-除了经验!
DaveU

3

如果工作簿很大,则不容易找到带有外部参考的格式条件。我写这个VBA函数来查找它。限于80列和500行,以减少执行时间。功能停止时,您可以检查位置:

 ?foglio.name
 ?cella.row
 ?cella.column

    Public Function CercaLink()
    Dim Cella As Object, i&, Foglio As Object
    For Each Foglio In ActiveWorkbook.Sheets
       ActiveWorkbook.Sheets(Foglio.Name).Select
       For Each Cella In ActiveSheet.Cells
         If Cella.Column < 80 Then
           If Cella.FormatConditions.Count > 0 Then
              For i = 1 To Cella.FormatConditions.Count
                 If InStr(1, Cella.FormatConditions(i).Formula1, ":\") > 0 Then Stop
              Next
           End If
        End If
        If Cella.Row > 500 Then Exit For
     Next
  Next
  End Function
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.