VBA-makro som raderar spöklänkar i Excel

Först publicerad:

| © ExcelKungen.com

En vanlig förekommande bugg i Excel är så kallade spöklänkar till externa arbetsböcker. Dessa länkar bör egentligen inte existera, eftersom vi inte kan identifiera några celler som refererar till externa filer.

Varje gång en användare, eller ett makro, öppnar en viss arbetsbok, dyker en ruta upp som frågar om vi vill uppdatera de externa länkarna. Tyvärr kan det ibland vara omöjligt att via menyerna ta bort dessa felaktiga länkar.

Vissa Excelböcker innehåller störande länkar (spöklänkar) till andra arbetsböcker, trots att inga celler innehåller några länkar.
Vissa Excelböcker innehåller störande länkar (spöklänkar) till andra arbetsböcker, trots att inga celler innehåller några länkar.

Ibland beter sig Excel på sätt som vi inte helt kan förklara. Trots våra ansträngningar att förstå orsaken till felen, kan vi till slut bli tvungna att ge upp. Det är då vi inser att vi har att göra med en "bugg".

Att ge upp inför ett problem betyder dock inte att vi lämnar det åt slumpen. När det gäller buggar i Excel är det viktigt att hitta effektiva lösningar, eller så kallade "workarounds".

Nedan förklaras hur du med hjälp av VBA-makrokod kan ta bort alla externa länkar, både riktiga och spöklänkar.

varLink = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If Not IsEmpty(varLink) Then
 i = 1
  Do Until IsEmpty(varLink)
   On Error GoTo 9
    ActiveWorkbook.BreakLink Name:=varLink(i), Type:=xlLinkTypeExcelLinks
  i = i + 1
 Loop
End If

Är spöklänkarna fortfarande kvar?

Ibland döljer sig dessa länkar inom så kallade "Named Ranges", som du hittar under menyn.

  • Formulas → Name Manager

Det finns ofta ett stort antal element här, vilket innebär att det finns områden i kalkylböcker som har getts namn. Dessa kan också länka till externa böcker utan att man är medveten om det. Om du inte använder Named Ranges kan du vanligtvis ta bort dem utan problem. Du kan eliminera dem antingen manuellt eller genom att använda nedanstående makrokod.

I vissa fall visar inte den nämnda "Name Manager" alla element. För att synliggöra dessa måste du använda följande kod:

Sub NamedRanges_MakeVisible()
 Dim nme As Name
  For Each nme In ActiveWorkbook.Names
   nme.Visible = True
  Next nme
End Sub

När alla element nu är synliga så kan vi slutföra elimineringen av dem:

Sub NamedRanges_Delete()
 Dim nme As Name
  For Each nme In ActiveWorkbook.Names
   nme.Delete
  Next nme
End Sub

Observera: Innan du kör makron av den här typen rekommenderar vi starkt att du skapar en säkerhetskopia. Det är alltid bäst att vara på den säkra sidan.

Populära artiklar

Dagens tips

Relaterade artiklar