Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1272to1276
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

Arbeitsmappenverbindung löschen

Arbeitsmappenverbindung löschen
Nimzo
Hallo zuammen
Ich habe in Spalte F die Namen von mehreren Arbeitsmappenverbindungen stehen.
Diese möchte ich nun per Makro löschen.
Kann mir jemand erklären, wie das geht?
Vielen Dank und viel Grüsse
Benjamin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Range("F2:F100").ClearContents
22.07.2012 22:35:04
Gerd
Gruß Gerd
AW: Range("F2:F100").ClearContents
22.07.2012 22:43:37
Nimzo
Hallo Gerd
Ich habe mich sehr dumm ausgedrückt. Sorry.
Was ich meinte, ich möchte die Arbeitsmappenverbindungen löschen, deren Namen in der Spalte F stehen.
Nicht den "Inhalt" der Spalte F.
Gruss
AW: Range("F2:F100").ClearContents
23.07.2012 04:33:40
fcs
Hallo Nimzo,
funktioniert denn nicht einfach Menü Daten--Verknüpfungen--entfernen?
Excel ersetzt dann die Formeln durch Werte.
Wenn du es wirklich nur auf die Formeln in auf eine bestimmten Spalte beschränken willst, dann wird es schwierig. Es sei denn es reicht: Kopieren --&gt Einfügen(nur Werte).
Gruß
Franz
AW: Range("F2:F100").ClearContents
23.07.2012 08:33:42
Nimzo
Hallo zusamen
Ich drücke mich wohl einfach ganz schlecht aus. Tur mir leid, dass ich Euch dadurch unnütze Arbeit gemacht habe.
Ich beschreibe mein Problem nun doch mal etwas konkreter.
Ich habe ca. 100 Datenverbindungen zum Web. Für jede dieser Verbindung habe ich unter "Daten - Verbindungen" eine Abfrage.
Diese haben alle einen eindeutigen Namen.
Da diese Abfragen aber nicht unbegrenzt benötigt werden und den ganzen Prozess unnötig verlangsamen, möchte ich einige davon wieder löschen.
Ich möchte also in einer Spalte (passiert durch eine Formel) die Arbeitsmappenverbindung eintragen, die gelöscht werden sollen.
Die schon vorhandenen Dateninhalte sollen natürlich bestehen bleiben.
Viele Grüsse
Anzeige
AW: Range("F2:F100"). Hyperlinks.Delete
23.07.2012 09:34:24
firmus
Hallo Benjamin,
'alle URLs löschen
Cells.Select
Selection.Hyperlinks.Delete
' ODER einzelne Bereiche löschen
Range("N14").Select
Selection.Hyperlinks.Delete
Vermutlich suchst Du das - die Dateninhalte bleiben erhalten.
Gruss
firmus
AW: Range("F2:F100").ClearContents
23.07.2012 12:06:55
fcs
Hallo Nimzo,
hier eine Lang- und eine Kurz-Version.
Den Bereich mit den Verbindungsnamen muss du ggf.anpassen.
Gruß
Franz

Sub RemoveConnections()
'Löscht die Verbindungen/Connections, deren Namen in einem Zellbereich stehen
Dim rngData As Range, rngZelle As Range
Dim wkbAktiv As Workbook
Dim strMsgText As String, strMsgTitel As String, lngMsgButtons As Long
strMsgTitel = "Makro: Remove Connections"
lngMsgButtons = vbInformation + vbOKOnly
On Error GoTo Fehler
Set wkbAktiv = ActiveWorkbook
If wkbAktiv.Connections.Count > 0 Then
With ActiveSheet
'Bereich mit Verbindungsnamen F2:Fxxx
Set rngData = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
If rngData.Row >= 2 Then
For Each rngZelle In rngData
If rngZelle  "" Then
wkbAktiv.Connections(rngZelle.Text).Delete
End If
Next
Else
strMsgText = "Keine Verbindungseinträge im Bereich " & rngData.Address
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End If
End With
Else
strMsgText = "Aktive Datei hat keine Verbindungen"
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End If
Fehler:
lngMsgButtons = vbInformation + vbOKOnly
With Err
Select Case .Number
Case 0 'alles OK
Case 9 'Index-Fehler in Auflisttung - Name ist falsch
lngMsgButtons = vbInformation + vbRetryCancel
strMsgText = "Verbindung """ & rngZelle.Text & """ existiert nicht!"
If MsgBox(strMsgText, lngMsgButtons, strMsgTitel) = vbRetry Then
Resume Next
End If
Case Else
strMsgText = "Fehler-Nr.: " & .Number & vbLf & .Description
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End Select
End With
End Sub
Sub RemoveConnections_kurz()
'Löscht die Verbindungen/Connections, deren Namen in einem Zellbereich stehen
Dim rngData As Range, rngZelle As Range
Dim wkbAktiv As Workbook
On Error Resume Next
Set wkbAktiv = ActiveWorkbook
If wkbAktiv.Connections.Count > 0 Then
With ActiveSheet
'Bereich mit Verbindungsnamen F2:Fxxx
Set rngData = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
If rngData.Row >= 2 Then
For Each rngZelle In rngData
If rngZelle  "" Then
wkbAktiv.Connections(rngZelle.Text).Delete
End If
Next
End If
End With
End If
End Sub

Anzeige
Perfekt. Vielen Dank
23.07.2012 23:24:27
Nimzo
Gruss
AW: Perfekt. Vielen Dank
24.07.2012 11:42:23
Nimzo
Hallo Franz
leider ist mir doch noch etwas aufgefallen.
Beide Makros haben ein Problem, wenn der Verbindungsname der in Spalte F steht, gar nicht mehr als Connection vorhanden ist.
Beim ersten Durchlauf macht das Makro alles richtig, lasse ich das Makro dann nochmals laufen erhalte ich:

'Bereich mit Verbindungsnamen F2:Fxxx
Set rngData = .Range(.Cells(1, 7), .Cells(.Rows.Count, 7).End(xlUp))
If rngData.Row >= 1 Then
For Each rngZelle In rngData
If rngZelle  "" Then
wkbAktiv.Connections(rngZelle.Text).Delete   Indexfehler '9', Index außerhalb  _
des geültigen Bereichs.
End If
Next
Else
Es scheint so, als würde er dann Deine "On Error" nicht aufrufen, oder?
Kannst Du nochmals helfen?
Gruss
Nimzo
Anzeige
AW: Perfekt. Vielen Dank
25.07.2012 00:01:12
fcs
Hallo Nimzo,
ich hab jetzt mal verschiedene Varianten für Werte und Formeln in Spalte F probiert.
Unter Excel 2010 kommt dann immer die entsprechende Meldung das Verbindung nicht existiert oder die allgemeine Fehlermeldung.
Probiere mal die folgenden Varianten. Hier werden die Namen der vorhandenen Verbindungen mit den Namen in Spalte F verglichen und bei Übereinstimmung gelöscht.
Gruß
Franz
Sub RemoveConnections()
'Löscht die Verbindungen/Connections, deren Namen in einem Zellbereich stehen
Dim rngData As Range, rngZelle As Range, varElement As Variant, bolDeleted As Boolean
Dim wkbAktiv As Workbook
Dim strMsgText As String, strMsgTitel As String, lngMsgButtons As Long
strMsgTitel = "Makro: Remove Connections"
lngMsgButtons = vbInformation + vbOKOnly
On Error GoTo Fehler
Set wkbAktiv = ActiveWorkbook
If wkbAktiv.Connections.Count > 0 Then
With ActiveSheet
'Bereich mit Verbindungsnamen F2:Fxxx
Set rngData = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
If rngData.Row >= 2 Then
For Each rngZelle In rngData
If rngZelle  "" Then
For Each varElement In wkbAktiv.Connections
If LCase(varElement.Name) = LCase(rngZelle.Text) Then
varElement.Delete
bolDeleted = True
Exit For
End If
Next varElement
If bolDeleted = False Then
lngMsgButtons = vbInformation + vbRetryCancel
strMsgText = "Verbindung """ & rngZelle.Text & """ existiert nicht!"
If MsgBox(strMsgText, lngMsgButtons, strMsgTitel) = vbCancel Then Exit For
End If
End If
Next
Else
strMsgText = "Keine Verbindungseinträge im Bereich " & rngData.Address
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End If
End With
Else
strMsgText = "Aktive Datei hat keine Verbindungen"
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End If
Fehler:
lngMsgButtons = vbInformation + vbOKOnly
With Err
Select Case .Number
Case 0 'alles OK
Case 9 'Index-Fehler in Auflisttung - Name ist falsch
lngMsgButtons = vbInformation + vbRetryCancel
strMsgText = "Verbindung """ & rngZelle.Text & """ existiert nicht!"
If MsgBox(strMsgText, lngMsgButtons, strMsgTitel) = vbRetry Then
Resume Next
End If
Case Else
strMsgText = "Fehler-Nr.: " & .Number & vbLf & .Description
MsgBox strMsgText, lngMsgButtons, strMsgTitel
End Select
End With
End Sub
Sub RemoveConnections_kurz()
'Löscht die Verbindungen/Connections, deren Namen in einem Zellbereich stehen
Dim rngData As Range, rngZelle As Range, varElement As Variant
Dim wkbAktiv As Workbook
On Error Resume Next
Set wkbAktiv = ActiveWorkbook
If wkbAktiv.Connections.Count > 0 Then
With ActiveSheet
'Bereich mit Verbindungsnamen F2:Fxxx
Set rngData = .Range(.Cells(2, 6), .Cells(.Rows.Count, 6).End(xlUp))
If rngData.Row >= 2 Then
For Each rngZelle In rngData
If rngZelle  "" Then
For Each varElement In wkbAktiv.Connections
If LCase(varElement.Name) = LCase(rngZelle.Text) Then
varElement.Delete
Exit For
End If
Next varElement
End If
Next
End If
End With
End If
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige