Das Archiv des Excel-Forums

Schliessen aller verknüpften Arbeitsmappen mit VBA

Bild

Betrifft: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Wilfried

Geschrieben am: 13.10.2003 07:52:52

Hallo Zusammen
mein Problem vom Freitag konnte ich leider noch nicht lösen:


Ich habe folgendes Makro zum Öffen aller verknüpften Arbeitsmappen


Sub ÖffnenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Links = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(Links) Then
For i = 1 To UBound(Links)
Workbooks.Open Links(i)
Next i
Else
MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
End If
End Sub


Nun möchte ich das Programm so umbauen, dass alle verknüpften Arbeitsmappen wieder geschlossen werden. Dabei sind die folgenden Versuche gescheitert:


Sub SchliessenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Links = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(Links) Then
For i = 1 To UBound(Links)
'Funktioniert nicht:
'Workbooks.Close Links(i)
'Funktioniert nicht:
'Workbooks(Links(i)).Close
Next i
Else
MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
End If
End Sub


Ich würde mich freuen wenn jemand dazu eine Idee hat.

Gruss
Wilfried
Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Hajo_Zi
Geschrieben am: 13.10.2003 08:00:18

Hallo Wilfried

Option Explicit


Sub ÖffnenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Dim I As Integer
Links = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(Links) Then
For I = 1 To UBound(Links)
Workbooks.Open Links(I)
Next I
Else
MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
End If
End Sub





Sub SchliessenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Dim I As Integer
Dim StDateiname As String
Dim InI As Integer
Links = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(Links) Then
For I = 1 To UBound(Links)
' Dateiname abtrennen
For InI = Len(Links(I)) To 1 Step -1
If Mid(Links(I), InI, 1) = "\" Then
StDateiname = Mid(Links(I), InI + 1, Len(Links(I)) - InI + 2)
Exit For
End If
Next InI
Workbooks(StDateiname).Close  ' True fall speichern
Next I
Else
MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
End If
End Sub




Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Ramses
Geschrieben am: 13.10.2003 08:16:36

Hallo Hajo,

hab deine Antwort nicht gesehen.
Dafür mache ich's ohne Schleife :-), er kann also wählen :-)

Gruss Rainer


Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Hajo_Zi
Geschrieben am: 13.10.2003 08:18:40

Hallo Rainer

ich war mi nicht sicher ob es den VBA Befehl InStrRev schon unter 2000 gibt. Ich hatte es so in Erinnerung erst ab XP???



Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/



Bild


Betrifft: Anyway :-)
von: Ramses
Geschrieben am: 13.10.2003 08:39:08

Hallo Hajo,

ich dachte ab 2000 :-)
No Problem. Wilfried kann ja probieren :-))

Gruss aus San Francisco ( 23:45 Uhr )
Rainer


Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Wilfried
Geschrieben am: 13.10.2003 08:16:55

Hallo Hajo

ich hatte schon nicht mehr an eine Lösung geglaubt ......

Vielen Dank für Deine superschnelle und geniale Lösung.
Es funktioniert einwandfrei !!!

Gruss Wilfried


Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Ramses
Geschrieben am: 13.10.2003 08:15:30

Hallo,

mit dem Aufruf der Verknüpfungen speicherst du automatisch auch den ganzen Pfad mit.
Die Geöffnete Datei hat aber immer nur den Namen xyz.xls ohne Pfad.
Das heisst, du musst den Pfad extrahieren um den reinen Dateinamen zu erhalten.


Sub SchliessenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Links = ActiveWorkbook.LinkSources(xlExcelLinks)
For i = 1 To UBound(Links)
Debug.Print Links(i)
'Workbooks.Open Links(i)
Next i
If Not IsEmpty(Links) Then
For i = 1 To UBound(Links)
'Damit extrahierst du den Pfad
Workbooks(Right(Links(i), Len(Links(i)) - InStrRev(Links(i), "\", -1))).Close
Next i
Else
MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
End If
End Sub


Gruss Rainer


Bild


Betrifft: AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
von: Wilfried
Geschrieben am: 13.10.2003 08:35:20

Hallo Rainer
vielen Dank für Deine spontane tolle Lösung die natürlich funktioniert. Dein Beitrag und der von Hajo haben mir wieder einmal vor Augen geführt wie gering meine VBA-Kenntnisse sind. Gut, dass es dieses Forum gibt...

Danke und Gruss
Wilfried


 Bild

Excel-Beispiele zum Thema " Schliessen aller verknüpften Arbeitsmappen mit VBA"

Passwortgeschützte Mappe öffnen, Daten kopieren, schliessen download Arbeitsmappe schliessen, wenn kein Eintrag in TextBox erfolgt download
Blätter in andere Arbeitsmappen kopieren download Variablenübergabe in andere Arbeitsmappen download
Zugriff auf geschlossene Arbeitsmappen download 1000 Arbeitsblätter aus 1000 Arbeitsmappen einlesen download
Arbeitsmappen-History erstellen download Alle Arbeitsmappen außer einer schließen download
Auslesen der Arbeitsmappeneigenschaften download Geöffnete Arbeitsmappen mit Arbeitblättern listen download
Alle Arbeitsmappen schließen bzw. Excel beenden download Ausgewählte Tabellenblätter als eigene Arbeitsmappen speichern download
Offene Arbeitsmappen in Dialog listen download Arbeitsmappen-Titel über benutzerdefinierte Funktion download
Arbeitsmappen eines Verzeichnisses ändern download Aus Excel heraus eine Email ohne Arbeitsmappenanlage versenden download
Arbeitsmappen- und Tabellenblattnamen auslesen download Alle Arbeitsmappen eines Verzeichnisses öffnen download
Blatttyp und Arbeitsmappennamen prüfen download Sicherheitskopien von Arbeitsmappen speichern download
Mehrere Arbeitsmappen per Outlook an einen Empfänger download Daten aus geschlossenen Arbeitsmappen listen download
Einlesen von Arbeitsmappen in ein TreeView-Steuerelement download Vorkommen eines Wortes in Arbeitsmappen eines Verzeichnisse download
Aufteilen der Arbeitsblätter in neue Arbeitsmappen download Geöffete Arbeitsmappen in Menü-ComboBox listen download
Aus einer Serie von Arbeitsmappen einen Bereich sammeln download Auswechseln der Excel- und Arbeitsmappen-Icons download
Benannte Bereich aus mehreren Arbeitsmappen importieren download Werte aus geschlossenen Arbeitsmappen einlesen download
DoubleClick-Ereignis für alle Arbeitsmappen initialisieren download Eintrag von Werten in verschiedene Arbeitsmappen download
Arbeitsmappen öffnen und Bereiche kopieren download Arbeitsmappen gem. Liste an Email-Adressen versenden download
Neue Arbeitsmappen mit Optionsfeldern erstellen download Werte aus anderen Arbeitsmappen importieren download