vba - 仅为工作表中的特定范围断开外部链接

标签 vba excel

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 取消。

任何帮助,将不胜感激。

最佳答案

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

关于vba - 仅为工作表中的特定范围断开外部链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797640/

相关文章:

excel - 打印时间表 PDF

vba - 遍历已发送邮件文件夹-点击非邮件项目时出错

database - 使用 'ODBC' 将 Excel VBA 连接到 oracle DB

sharepoint - 错误处理未捕获运行时错误

c# - 我可以通过剪贴板将 [Serializable] 对象传递到 Excel 加载项吗?

java - 使用 Java 对 Excel 列值求和

vb.net - 如何使用 Doxygen 记录 Visual Basic

excel - 将 Excel 筛选结果放入 VBA 数组

vba - 在VBA中这两种使用循环的方式的时间复杂度有什么区别?

c# - 有没有一种方法可以更有效或更快地在 excel 文件中写入大型数据表?