Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1560to1564
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Versteckte Funktionen / Verknüpfungen

Versteckte Funktionen / Verknüpfungen
06.06.2017 09:34:46
Malte
Hallo zusammen, ich benötige eure Hilfe.
Und zwar habe ich das Problem, dass ich eine Verknüpfung angezeigt bekomme, die ich
aber weder finde(über normale Suche und im Namensmanager), noch löschen kann.
Die verknüpfte Datei ist auch noch vorhanden, und wenn ich die "Werte akualisiere",
bekomme ich auch die Rückmeldung "Status" ok.
Kann mir jemand sagen, wie ich dem Ganzen auf die Schliche komme? Ich verzweifle
langsam, da diese Verknüpfung wohl auch regelmäßig dafür sorgt, dass Excel komplett
abstürzt, und das ist immer sehr ärgerlich und aufwendig.
Wie gesagt, ich habe bereits die normale Suchfunktion mit allen Optionen benutzt,
sowie den Namensmanager nach Einträgen durchsucht, beides ohne Erfolg.
Ich würde mich riesig freuen, wenn ihr mir da helfen könntet! Und um es noch schwerer
zu machen, muss ich noch dazu sagen, dass ich die Datei nicht zur Verfügung stellen
kann.
Gruß Malte

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Versteckte Funktionen / Verknüpfungen
06.06.2017 09:40:49
Sepp
Hallo Malte,
versuch mal folgenden Code.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Dim iFound As Integer

'
'Quelle http://www.bmsltd.ie/MVP/Default.htm
'

Private Function CheckDelete(Where As String, What As String)
Dim iResp As Integer
iFound = iFound + 1
iResp = MsgBox("Found a link in " & Where & ":" & Chr(10) & What & Chr(10) & "Shall I delete it?", vbYesNoCancel, "Link Finder")
Select Case iResp
  Case vbCancel
    Application.StatusBar = False
    End
  Case vbYes
    CheckDelete = True
  Case vbNo
    CheckDelete = False
End Select
End Function



Sub FindLinks()
Dim obj As Object, oSheet As Object, oSeries As Object
Dim iOLEfound As Integer, stMsg As String
Dim rCell As Range, rFirst As Range, rToDo As Range
Dim rDone As Range, rAll As Range, rArea As Range
Static LinkString As String

iFound = 0

If IsEmpty(ActiveWorkbook.LinkSources()) Then
  MsgBox "There are no links from this workbook"
  Exit Sub
End If
LinkString = InputBox("Name of file to which links refer?" & _
  Chr(10) & "Do not include path if file is open", Default:=LinkString, _
  Title:="Link Finder")
If LinkString = "" Then Exit Sub

Application.StatusBar = "Looking for links in workbook names"

' first look for names
For Each obj In ActiveWorkbook.Names
  If InStr(obj.RefersTo, LinkString) > 0 Then
    stMsg = ""
    If obj.Visible = False Then stMsg = stMsg & "hidden "
    If CheckDelete(stMsg & "name " & obj.Name, obj.RefersTo) Then obj.Delete
  End If
Next obj

' now scan each sheet in turn
For Each oSheet In ActiveWorkbook.Sheets
  Application.StatusBar = "Looking for links in sheet " & oSheet.Name
  iOLEfound = 0
  If TypeName(oSheet) <> "Module" Then
    For Each obj In oSheet.DrawingObjects
      
      ' any drawing object could be linked to a macro
      If InStr(obj.OnAction, LinkString) > 0 Then
        If CheckDelete("OnAction of " & TypeName(obj) & " '" & obj.Name & "' in " & oSheet.Name, obj.OnAction) Then obj.OnAction = ""
      End If
      
      ' some drawing objects have formula properties
      Select Case TypeName(obj)
          
        Case "TextBox", "Picture", "Button"
          If InStr(obj.Formula, LinkString) > 0 Then
            If CheckDelete("formula of " & TypeName(obj) & " '" & obj.Name & "' in " & oSheet.Name, obj.Formula) Then obj.Formula = ""
          End If
          
        Case "OLEObject"
          ' can't get to the formula of an OLEObject - so report at end
          iOLEfound = iOLEfound + 1
          
        Case "ChartObject"
          For Each oSeries In obj.Chart.SeriesCollection
            If InStr(oSeries.Formula, LinkString) > 0 Then
              If CheckDelete("series " & oSeries.Name & " in Chart " & obj.Name & " on sheet " & oSheet.Name, oSeries.Formula) Then oSeries.Formula = ""
            End If
          Next oSeries
      End Select
    Next
    If TypeName(oSheet) = "Worksheet" Then
      ' look in cell formulae
      Application.ScreenUpdating = False ' otherwise screen flashes
      Set rCell = Nothing
      On Error Resume Next
      Set rCell = oSheet.UsedRange.Find(LinkString, oSheet.UsedRange.Range("A1"), xlFormulas, xlPart, xlByRows, xlNext)
      On Error GoTo 0
      If Not rCell Is Nothing Then
        Set rFirst = rCell
        Set rAll = rCell
        Do
          Set rCell = oSheet.UsedRange.FindNext(rCell)
          Set rAll = Union(rAll, rCell)
        Loop Until rCell.Address = rFirst.Address
        Application.ScreenUpdating = True
        
        For Each rArea In rAll.Areas
          Set rDone = rArea.Cells(1, 1)
          Set rToDo = rArea.Cells(1, 1)
          Do
            For Each rCell In rArea.Cells
              If Intersect(rDone, rCell) Is Nothing Then
                If rToDo Is Nothing Then
                  Set rToDo = rCell
                ElseIf rCell.FormulaR1C1 = rToDo.Cells(1, 1).FormulaR1C1 Then
                  Set rToDo = Union(rToDo, rCell)
                End If
              End If
            Next rCell
            stMsg = "cell "
            If rToDo.Cells.Count > 1 Then stMsg = "cells "
            If CheckDelete(stMsg & oSheet.Name & "!" & rToDo.Address, rToDo.Range("A1").Formula) Then
              rToDo.Formula = rToDo.Value
            End If
            Set rDone = Union(rDone, rToDo)
            Set rToDo = Nothing
          Loop Until rDone.Address = rArea.Address
        Next rArea
      End If
    ElseIf TypeName(oSheet) = "Chart" Then
      ' look in chart series
      For Each oSeries In oSheet.SeriesCollection
        If InStr(oSeries.Formula, LinkString) > 0 Then
          If CheckDelete("series " & oSeries.Name & " in Chart " & _
            obj.Name, oSeries.Formula) Then oSeries.Formula = ""
        End If
      Next oSeries
    ElseIf TypeName(oSheet) = "DialogSheet" Then
      ' look in on action of dialog frame
      If InStr(oSheet.DialogFrame.OnAction, LinkString) > 0 Then
        If CheckDelete("dialog frame of " & oSheet.Name, oSheet.DialogFrame.OnAction) Then oSheet.DialogFrame.OnAction = ""
      End If
    End If
  End If
  If iOLEfound = 1 Then
    MsgBox "There is an OLE Object on sheet " & oSheet.Name & " which I could not check"
    oSheet.OLEObjects.Select
  ElseIf iOLEfound > 1 Then
    MsgBox "There are " & iOLEfound & " OLE Objects on sheet " & oSheet.Name & " which I could not check"
    oSheet.OLEObjects.Select
  End If
Next oSheet
If iFound = 0 Then MsgBox "No links found to " & LinkString, vbInformation, "Link Finder"
Application.StatusBar = False
End Sub

Gruß Sepp

Anzeige
AW: Versteckte Funktionen / Verknüpfungen
06.06.2017 10:41:58
Malte
Hallo Sepp.
Vielen Dank für den Code. Es bleibt aber wie verhext, der Link kann nicht gefunden werden. Da in der
Mappe 2 Links vorhanden sind, der zweite ist korrekt, habe ich diesen testweise mit deinem Code auch
gesucht, und auch gefunden. Dein Code funktioniert also wunderbar, nur irgendwas ist mit der Datei
"kaputt".
Gruß Malte
AW: Versteckte Funktionen / Verknüpfungen
06.06.2017 10:44:56
Malte
Hallo Chris.
Vielen Dank für den Hinweis auf den schon vorhandenen Thread.
Ich habe jetzt mal alle 3 Codes ausprobiert, welche an sich auch wunderbar funktionieren, aber leider
nicht zum gewünschten Ziel. Eine zweite, korrekte Verknüpfung wird ordnungsgemäß angezeigt, aber eben
nicht die gesuchte. Ich verstehe das nicht...
Gruß Malte
AW: Versteckte Funktionen / Verknüpfungen
06.06.2017 10:55:37
ChrisL
Hi Malte
Wenn du die Datei nicht einfach neu erstellen willst, dann lösche mal alle persönlichen Daten aus der Datei und lade ins Forum.
cu
Chris
AW: Versteckte Funktionen / Verknüpfungen
06.06.2017 12:08:08
Malte
Hallo Chris.
Ich habe die Lösung gefunden, nachdem ich schrittweise Bereiche der Tabelle gelöscht habe.
Es waren Comboboxen, deren Wertebereich in der alten Datei definiert waren. Schnell geändert,
und schon ist die ungewünschte Verknüpfung weg.
Aber schon echt tricky, wo sich sowas alles verstecken kann...
Trotzdem vielen Dank für deine Hilfe!
Gruß Malte
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige