Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA zur Aktualisierung des Tabellenblattes

VBA zur Aktualisierung des Tabellenblattes
09.08.2017 14:57:19
AKor
Hallo,
Hintergrund meines Anliegens, es soll ein automatisierte Zusammenfassung von gut 100 einzelnen .xlsx Dateien erstellt werden, die im Zeitablauf in einem bestimmten Ordner reinkopiert werden. Es sind somit nicht von Anfang an alle Datei im Verzeichnis. Die Tabelle ist fertig und funktioniert manuell.
Zur Automatisierung habe ich in dieser Tabelle einen Button + Makro, mit dem ich prüfe, ob eine bestimmte Datei in dem Ordner liegt.
Wenn nein, dann wird in die Zelle A1 eine 0 geschrieben, wenn ja dann eine 1 ... dann hole ich mir über =wenn(A1=0;"";Pfad + Datei + Blatt + Zelle) den Wert und schreibe es in A2 .....
Wenn, wie oben beschrieben eine 0 in A1 steht, dann lasse ich über einen Button + Makro diese Zeile ausblenden.
Bis hier funktioniert alles wunderbar.
Da ich über einen Hyperlink diese oben erwähnten Dateien direkt öffnen und ändern kann, muss das Tabellenblatt entsprechend aktualisiert werden. Über die Statusleiste geht es leider nicht, wohl aber mit
Sub Daten_aktualisieren()
On Error Resume Next
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
End Sub

Problem, hier werden ALLE Links des Tabellenblattes aktualisiert. Auch wenn die Zeile ausgeblendet ist, da die Datei nicht existiert und somit in A1 eine 0 steht.
Was kann ich tun?
Danke und Gruß AKor
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA zur Aktualisierung des Tabellenblattes
09.08.2017 21:40:19
Dieter
Hallo AKor,
um einen einzelnen Link zu aktualisieren, schreibst du
ActiveWorkbook.UpdateLink Name:="C:\VBA_Test\Beispiel1.xlsx"
oder besser noch
ThisWorkbook.UpdateLink Name:="C:\VBA_Test\Beispiel1.xlsx"
Viele Grüße
Dieter
AW: VBA zur Aktualisierung des Tabellenblattes
10.08.2017 07:41:47
AKor
Guten Morgen,
vielen Dank schon mal, das lege ich mir mal zur Seite.
..............ActiveWorkbook.UpdateLink Name:="C:\VBA_Test\Beispiel1.xlsx"
oder besser noch
................ThisWorkbook.UpdateLink Name:="C:\VBA_Test\Beispiel1.xlsx"

dass nützt mir jedoch noch nicht wirklich etwa, so dass ich gestern noch etwas gegrübelt habe.
Das soll das Makro können.
- Variable Ende - suche in Spalte D die letzte beschriebene Zelle mit dem Wert 1
........- setze eine Schleife von 1 bis zu diesem Wert Ende
- prüfe, ob im aktuellen Tabellenblatt in D1 eine 0 steht
........- wenn ja, spring in D2 und prüfe erneut usw.
................- wenn nein, (in D kann nur 0 oder 1 stehen), dann
................- nimm aus E1 den hinterlegten LINK (steht dort drin)
................- lade diesen Link erneut und aktualisiere dadurch diese Zeile
................- spring zu D2 und prüfe erneut bis zum Wert ENDE für D
Insgesamt wird die Tabelle gut 500 Zeilen umfassen....
Vielen Dank, AKor
Anzeige
AW: VBA zur Aktualisierung des Tabellenblattes
10.08.2017 11:48:00
Dieter
Hallo AKor,
lade doch einfach mal eine Beispielmappe hoch, Daten ggf. verändert und/oder anonymisiert.
Dann schaue ich mir das heute Abend gern genauer an.
Viele Grüße
Dieter
;
Anzeige
Anzeige

Infobox / Tutorial

VBA zur automatischen Aktualisierung von Excel-Tabellenblättern


Schritt-für-Schritt-Anleitung

Um die Links in Deinem Excel-Arbeitsblatt mithilfe von VBA zu aktualisieren, kannst Du das folgende Makro verwenden. Es ermöglicht eine gezielte Aktualisierung der Links, anstatt alle Links im Arbeitsblatt zu aktualisieren.

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinDateiname)".
    • Wähle "Einfügen" und dann "Modul".
  3. Kopiere und füge den folgenden Code in das Modul ein:

    Sub Daten_aktualisieren()
       Dim Ende As Long
       Dim i As Long
       Ende = Cells(Rows.Count, "D").End(xlUp).Row
    
       For i = 1 To Ende
           If Cells(i, "D").Value = 1 Then
               ActiveWorkbook.UpdateLink Name:=Cells(i, "E").Value
           End If
       Next i
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Du kannst jetzt einen Button hinzufügen, um das Makro zu starten. Gehe zu "Entwicklertools" > "Einfügen" > "Button" und weise das Makro zu.


Häufige Fehler und Lösungen

  • Problem: Das Makro aktualisiert alle Links, auch die in ausgeblendeten Zeilen.

    • Lösung: Stelle sicher, dass Du die Bedingung im Code anpasst, sodass nur Links aktualisiert werden, wenn in der entsprechenden Zelle der Wert 1 steht.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe, ob der Pfad und die Datei in der Zelle korrekt sind. Es könnte sein, dass die Datei nicht existiert oder der Pfad falsch ist.

Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch manuell die Excel-Funktion Daten > Abfragen und Verbindungen > Aktualisieren verwenden, um die Links zu aktualisieren. Dies funktioniert jedoch nur, wenn Du die Datei manuell öffnest.


Praktische Beispiele

Angenommen, Du hast in Spalte E die Links zu den Dateien und in Spalte D die Werte 0 oder 1, dann prüft das oben genannte Makro, ob der Wert in Spalte D gleich 1 ist. Wenn ja, wird der entsprechende Link aus Spalte E aktualisiert.

Ein Beispiel für einen Link in Zelle E1 könnte so aussehen:

C:\VBA_Test\Beispiel1.xlsx

Wenn in D1 der Wert 1 steht, wird dieser Link aktualisiert.


Tipps für Profis

  • Verwende ThisWorkbook.UpdateLink statt ActiveWorkbook.UpdateLink, um sicherzustellen, dass Du nur die Links in der aktuellen Arbeitsmappe aktualisierst.
  • Setze Application.ScreenUpdating = False, um das Flackern des Bildschirms beim Ausführen des Makros zu vermeiden. Vergiss nicht, es am Ende wieder auf True zu setzen.
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Wie aktualisiere ich nur einen bestimmten Link?
Du kannst den spezifischen Link mit ActiveWorkbook.UpdateLink Name:="DeinLink" aktualisieren, anstatt alle Links.

2. Was ist der Unterschied zwischen ActiveWorkbook und ThisWorkbook?
ActiveWorkbook bezieht sich auf die aktuell aktive Arbeitsmappe, während ThisWorkbook sich auf die Arbeitsmappe bezieht, in der das Makro gespeichert ist.

3. Wie kann ich sicherstellen, dass das Makro nur bei Bedarf ausgeführt wird?
Du kannst das Makro so anpassen, dass es nur ausgeführt wird, wenn eine bestimmte Bedingung erfüllt ist, z.B. wenn eine bestimmte Zelle geändert wird.

4. Was passiert, wenn der Link nicht existiert?
Wenn der Link nicht existiert, bleibt das Programm stehen. Du solltest Fehlerbehandlung in Dein Makro integrieren, um sicherzustellen, dass das Programm weiterläuft, auch wenn ein Link fehlt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige