仅中断工作表中特定范围的外部链接

时间:2018-06-11 12:21:11

标签: excel vba excel-vba

Sub BreakLinks()
  Dim wb As Workbook
  Set wb = Application.ActiveWorkbook
  If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then
     For Each link In wb.LinkSources(xlExcelLinks)
        wb.BreakLink link, xlLinkTypeExcelLinks
     Next link
  End If
End Sub

此代码会中断活动工作簿的所有外部链接。如何在特定工作表中的选定范围内执行此操作?

另外,我想首先在列表中显示外部链接(从所选范围),然后是2个按钮:1表示删除它们,第2表示取消。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

LinkSources(xlExcelLinks)Workbook - MSDN Workbook.LinkSources的一种方法,因此它不会向小区提供.BreakLink

但是,您可以使用给定范围(givenRange.SpecialCells(xlCellTypeFormulas))中的公式遍历单元格,并检查它们是否包含链接公式所需的[。如果他们拥有它,只需将公式写为值:

Option Explicit

Sub BreakLinks()

    Dim givenRange As Range
    Set givenRange = Selection

    Dim myCell As Range
    For Each myCell In givenRange.SpecialCells(xlCellTypeFormulas)
         If InStr(myCell.Formula, "[") Then
            Debug.Print myCell.Address
            myCell.Value2 = myCell.Value2
         End If
    Next myCell

End Sub

答案 1 :(得分:1)

解决方案:

  • 1:创建一个包含将列出所有外部链接的列表的用户表单
  • 2:在特定工作表上设置自定义范围,并使用以下方法遍历该范围内的单元格:

    .SpecialCells(xlCellTypeFormulas)
    
  • 3:使用以下命令查找包含外部链接的单元格:

    InStr(1, rCell.Formula, "[") > 0 Then
    
  • 4:重新整理数组并将cell.address存储在数组中
  • 5:通过数组填写用户表单上的列表框(也可以在初始循环中立即填充列表框)
  • 6:在列表框中选择一个值并使用按钮删除外部链接(使用查找或确保已存储了cell.address)
  • 7:你可以让你的名单成为多选的一个......

编辑基本上@Vityata在代码中解释了什么(打败我吧:))