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