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

Forumthread: VBA - geschlossene Excel aktualisieren

VBA - geschlossene Excel aktualisieren
26.04.2016 12:32:32
Michael
Hallo Forum,
ich suche nach einer Möglichkeit eine geschlossene Excel Datei ohne sie öffnen zu müssen über VBA dazu zu bewegen sich zu aktualisieren. Ich habe eine Verknüpfung zu einer Access Datenbank wo ich über "Refresh All" mir auf täglicher Basis die Daten in die Excel ziehe.
Da ich mehrere dieser Excel Dateien habe würde ich gerne aus einer Master Excel über VBA diese über einen Button aktualisieren ohne jede einzelne öffnen zu müssen.
Konkret stelle ich mir eine Auflistung im Master Excel vor wo hinter den Namen der Excel ein Button ist wo ich den Pfad im Code hinterlege. Bei einem Klick soll diese spezielle Excel sich ungeöffnet aktualisieren.
Danke und Gruß
Michael

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - geschlossene Excel aktualisieren
26.04.2016 12:47:05
Benedikt
Hallo
Unter dem Reiter Daten-Verbindungen kann man die Option Verbindungsoptionen auswählen
Hier einfach einen Hacken bei, Aktualiesierung im Hintergrund zulassen, setzen
Gruß Benedikt

AW: VBA - geschlossene Excel aktualisieren
26.04.2016 12:48:37
Daniel
geht nicht.
Eine Exceldatei ist wie ein Koffer.
man kann mit bestimmten Methoden zwar reinschauen ohne ihn zu öffnen, aber wenn du am Inhalt was verändern willst, wirst du ihn öffnen müssen.
Gruß Daniel

Anzeige
AW: VBA - geschlossene Excel aktualisieren
26.04.2016 17:28:24
Michael
Und wie sieht es mit dem Code aus?
 Public Sub RefreshWorkbooks()
Dim objWorkbook As Workbook
Dim strFolder As String, strThisworkbookName As String
Dim strFilename As String
strFolder = ThisWorkbook.Path & "\"
strThisworkbookName = ThisWorkbook.Name
With Application
.EnableEvents = False
.ScreenUpdating = False
.ShowWindowsInTaskbar = False
End With
strFilename = Dir$(strFolder & "*.xlsm*")
Do Until strFilename = vbNullString
If strFilename  strThisworkbookName Then
Set objWorkbook = Workbooks.Open(Filename:= _
strFolder & strFilename, UpdateLinks:=3)
Call objWorkbook.Close(SaveChanges:=True)
Set objWorkbook = Nothing
End If
strFilename = Dir$
Loop
With Application
.EnableEvents = True
.ScreenUpdating = True
.ShowWindowsInTaskbar = True
End With
End Sub
Ich will jedoch nicht das die Links updated werden, sondern das vielmehr RefreshAll angestossen wird, so dass das Sheet sich die neuen Daten aus Access zieht. Kann man diesen Code dafür umschreiben oder eignet er sich für meine Zwecke garnicht?
Gruß
Michael

Anzeige
AW: VBA - geschlossene Excel aktualisieren
26.04.2016 17:41:20
Nepumuk
Hallo,
na dann, einfach so:
Option Explicit

Public Sub RefreshWorkbooks()
    
    Dim objWorkbook As Workbook
    Dim strFolder As String, strThisworkbookName As String
    Dim strFilename As String
    
    strFolder = ThisWorkbook.Path & "\"
    strThisworkbookName = ThisWorkbook.Name
    
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        .ShowWindowsInTaskbar = False
    End With
    
    strFilename = Dir$(strFolder & "*.xlsm")
    
    Do Until strFilename = vbNullString
        
        If strFilename <> strThisworkbookName Then
            
            Set objWorkbook = Workbooks.Open(Filename:= _
                strFolder & strFilename, UpdateLinks:=3)
            
            Call objWorkbook.RefreshAll
            
            Call objWorkbook.Close(SaveChanges:=True)
            
            Set objWorkbook = Nothing
            
        End If
        
        strFilename = Dir$
        
    Loop
    
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .ShowWindowsInTaskbar = True
    End With
End Sub

Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel-Datei automatisch aktualisieren ohne öffnen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul hinzufügen: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt, wähle „Einfügen“ und dann „Modul“.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das neue Modul:

    Public Sub RefreshWorkbooks()
        Dim objWorkbook As Workbook
        Dim strFolder As String, strThisworkbookName As String
        Dim strFilename As String
    
        strFolder = ThisWorkbook.Path & "\"
        strThisworkbookName = ThisWorkbook.Name
    
        With Application
            .EnableEvents = False
            .ScreenUpdating = False
            .ShowWindowsInTaskbar = False
        End With
    
        strFilename = Dir$(strFolder & "*.xlsm*")
    
        Do Until strFilename = vbNullString
            If strFilename <> strThisworkbookName Then
                Set objWorkbook = Workbooks.Open(Filename:=strFolder & strFilename, UpdateLinks:=3)
                Call objWorkbook.RefreshAll
                Call objWorkbook.Close(SaveChanges:=True)
                Set objWorkbook = Nothing
            End If
            strFilename = Dir$
        Loop
    
        With Application
            .EnableEvents = True
            .ScreenUpdating = True
            .ShowWindowsInTaskbar = True
        End With
    End Sub
  4. Makro ausführen: Du kannst das Makro jetzt über einen Button in deiner Excel-Arbeitsmappe ausführen. Füge einen Button hinzu und weise das Makro zu.


Häufige Fehler und Lösungen

  • Fehler: „Die automatische Aktualisierung von Verknüpfungen wurde deaktiviert“
    Lösung: Stelle sicher, dass die Option „Aktualisierung im Hintergrund zulassen“ aktiviert ist. Gehe zu „Daten“ > „Verbindungen“ > „Verbindungsoptionen“.

  • Fehler: Makro funktioniert nicht
    Lösung: Überprüfe die Sicherheitseinstellungen für Makros in Excel unter „Datei“ > „Optionen“ > „Trust Center“ > „Einstellungen für das Trust Center“.


Alternative Methoden

  • Excel-Verknüpfungen automatisch aktualisieren: Du kannst die Option „Excel beim Öffnen aktualisieren“ aktivieren. Gehe zu „Daten“ > „Verknüpfungen“ und aktiviere die Option „Aktualisieren beim Öffnen“.

  • Access VBA Refresh All: Wenn deine Datenquelle eine Access-Datenbank ist, kannst du über VBA die Verbindung zur Access-Datenbank aktualisieren, bevor du die Excel-Datei öffnest.


Praktische Beispiele

  • Beispiel für einen Button: Füge einen Button hinzu und weise das Makro „RefreshWorkbooks“ zu, um alle Excel-Dateien im gleichen Ordner automatisch zu aktualisieren, ohne sie zu öffnen.

  • Verknüpfte Excel-Dateien: Du kannst mehrere Excel-Dateien verknüpfen und deren Daten mit dem oben genannten Makro automatisch aktualisieren.


Tipps für Profis

  • Automatisierung optimieren: Verwende Application.DisplayAlerts = False, um Warnmeldungen zu unterdrücken, während das Makro läuft. Vergiss nicht, es am Ende wieder zu aktivieren.

  • Fehlerbehandlung einfügen: Füge Fehlerbehandlungsroutinen in deinen VBA-Code ein, um sicherzustellen, dass das Makro auch bei unerwarteten Fehlern stabil bleibt.


FAQ: Häufige Fragen

1. Kann ich Excel-Dateien automatisch aktualisieren, ohne sie zu öffnen?
Ja, du kannst VBA verwenden, um die RefreshAll-Methode für geschlossene Excel-Dateien anzuwenden.

2. Wie aktiviere ich die automatische Aktualisierung von Verknüpfungen?
Gehe zu „Daten“ > „Verknüpfungen“ und aktiviere die Option „Aktualisieren beim Öffnen“.

3. Was mache ich, wenn das Makro nicht funktioniert?
Überprüfe deine Makrosicherheitseinstellungen und stelle sicher, dass die Datei im richtigen Format gespeichert ist (z.B. .xlsm).

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