Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
320to324
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
320to324
320to324
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schliessen aller verknüpften Arbeitsmappen mit VBA

Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 07:52:52
Wilfried
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:00:18
Hajo_Zi
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/

Anzeige
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:16:36
Ramses
Hallo Hajo,

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

Gruss Rainer
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:18:40
Hajo_Zi
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/

Anzeige
Anyway :-)
13.10.2003 08:39:08
Ramses
Hallo Hajo,

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

Gruss aus San Francisco ( 23:45 Uhr )
Rainer
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:16:55
Wilfried
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
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:15:30
Ramses
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
Anzeige
AW: Schliessen aller verknüpften Arbeitsmappen mit VBA
13.10.2003 08:35:20
Wilfried
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige