VBA: Verknüpften Arbeitsmappen in RANGE öffnen
#1
Question 
Hallo zusammen,

ich habe folgendes Makro im Netz gefunden. (Quelle) https://www.herber.de/forum/archiv/1176t...lieen.html

Code:
Sub ÖffnenUndSchliessenAllerVerknüpftenArbeitsmappen()
Dim Links As Variant
Dim wb As Workbook
   Links = ActiveWorkbook.LinkSources(xlExcelLinks)
   If Not IsEmpty(Links) Then
      For i = 1 To UBound(Links)
        'Aufruf Aktualisierung ausschalten: ", UpdateLinks:=0"
         Set wb = Workbooks.Open(Links(i), UpdateLinks:=1)
         'Speicheranfrage unterdrücken:
         Application.DisplayAlerts = False
         ActiveWorkbook.Save
         wb.Close
     Next i
   Else
      MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
   End If
  Application.DisplayAlerts = True
End Sub

Nun würde ich gerne nur die Verknüpften Arbeitsmappen in einem vordefinierten Bereich öffnen und aktualisieren lassen.
Oder das jede Arbeitsmappe nur einmal geöffnet und aktualisiert wird.

Kann mir hier jemand dabei helfen?

Danke & viele Grüße
Antworten Top
#2
Hallöchen,

Zitat:Nun würde ich gerne nur die Verknüpften Arbeitsmappen in einem vordefinierten Bereich öffnen und aktualisieren lassen.

Soll das heißen, dass Du z.B. in Mappe A eine Verknüpfung zu Mappe B hast und statt A zu aktualisieren dann in Mappe B z.B. den von Dir definierten Bereich X99 ändern willst?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Guten Morgen,

ich habe eine Übersicht mit ganz vielen Dateien Verknüpft.
Leider muss ich viele Dateien doppelt oder auch mehrfach verknüpfen (sind immer andere Zellen) um auf meine Ergebnisse zu kommen.

Das Makro macht leider alle Verknüpften Dateien in der Arbeitsmappe auf. Auch meine Dateien die 3 Fach oder noch öfters verknüpft sind. Da dachte ich mir vielleicht kann man ja das öffnen der Dateien in meiner Übersicht auf einen Bestimmten Bereich reduzieren.

Hoffe es war verständlich. :)

Viele Grüße
Antworten Top
#4
Hallo, 19 

du könntest "Intersect" nehmen: 21

Code:
Option Explicit
Public Sub Main()
    Dim Links As Variant, i As Long
    Dim wb As Workbook
    If Not Intersect(ActiveCell, Range("D1:D25")) Is Nothing Then
        Links = ActiveWorkbook.LinkSources(xlExcelLinks)
        If Not IsEmpty(Links) Then
            For i = 0 To UBound(Links)
                'Aufruf Aktualisierung ausschalten: ", UpdateLinks:=0"
                Set wb = Workbooks.Open(Links(i), UpdateLinks:=1)
                'Speicheranfrage unterdrücken:
                Application.DisplayAlerts = False
                ActiveWorkbook.Save
                wb.Close
            Next i
        Else
            MsgBox "Diese Arbeitsmappe hat keine Verknüpfungen zu anderen Mappen!"
        End If
    End If
    Application.DisplayAlerts = True
End Sub

Oder - falls sich der Bereich öfter ändert - auch "Application.InputBox-Methode (Excel)...". Dodgy

Und das Array ist Nullbasiert, also "For i = 0 to..."
Antworten Top
#5
Hallöchen,

das sind eigentlich zwei verschiedene Anforderungen

zum einen

For i = 1 To UBound(Links)

Die Schleife könntest Du z.B. durch einen spätere Beginn - statt 1 dann 5 oder was auch immer - oder ein zeitigeres Ende einschränken

zum zweiten

Du könntest per Prüfung mit If ... in der Schleife bestimmte Links aus- oder nur selbige einschließen

zum dritten

könntest Du ausgeführte Links merken und diese bei wiederholtem Auftreten überspringen.
Du könntest Die z.B. in einem Array speichern und dieses dann zur Prüfung durchgehen oder in einer Collection ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste