Excel 即使数据已经被复制,外部链接仍然显示

Excel 即使数据已经被复制,外部链接仍然显示

问题描述

我有一个存储在OneDrive上的宏启用工作簿。在这个工作簿中,我记录了一个用于生成新工作簿的宏。这个新创建的工作簿是原工作簿中一个工作表的副本,并保存在桌面上。为了确保数据完整性,我试图断开工作簿中使用的公式的链接。但是,尽管我的努力,外部链接仍然存在。

我尝试通过采用一种方法来解决这个问题,即即使在这个过程之后,我将大多数公式复制并粘贴为值,但外部链接仍然存在,当我点击数据选项卡的工作簿链接时。尽管在工作表中没有一个公式引用其他外部工作簿,但是其中有一个超链接公式引用了工作簿中的单元格,而不是外部的工作簿。

我的问题是是否有一种自动消除这些外部链接的方法,而不是手动删除。这是我记录下来的宏供参考。

Sub Macro4()
    Sheets("Email_To_Managers").Select
    Sheets("Email_To_Managers").Copy
    Range("A4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                           :=False, Transpose:=False
    Range("G4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                           :=False, Transpose:=False
    Cells.Select
    Application.CutCopyMode = False
    Selection.Locked = True
    Selection.FormulaHidden = True
    Range("F155").Select
    Selection.End(xlUp).Select
    Range("F4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Locked = False
    Selection.FormulaHidden = True
    ActiveSheet.Protect "noway19_97", DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveWorkbook.Protect Structure:=True, Windows:=False, Password:="noway19_97"
    ActiveWorkbook.SaveAs Filename:="C:\Users\WilliamTschetter\Desktop\NEW_IN_DEMANDS.xlsx", _
                          FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub

解决方案

您的宏代码存在冗余,这是经过编辑的宏版本,可以打破外部链接。

Sub CreateCopyAndBreakLinks()

    Dim newWb As Workbook
    Dim ws As Worksheet

    ' Copy the worksheet to a new workbook
    ThisWorkbook.Sheets("Email_To_Managers").Copy
    Set newWb = ActiveWorkbook
    Set ws = newWb.Sheets(1)

    ' Break external links
    Dim link As Variant
    For Each link In newWb.LinkSources(Type:=xlLinkTypeExcelLinks)
        newWb.BreakLink Name:=link, Type:=xlLinkTypeExcelLinks
    Next link

    ' Protect sheet and workbook
    ws.Protect Password:="noway19_97", DrawingObjects:=True, Contents:=True, Scenarios:=True
    newWb.Protect Structure:=True, Windows:=False, Password:="noway19_97"

    ' Save the new workbook
    newWb.SaveAs Filename:="C:\Users\WilliamTschetter\Desktop\NEW_IN_DEMANDS.xlsx", _
                 FileFormat:=xlOpenXMLWorkbook
    newWb.Close SaveChanges:=False

End Sub

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程