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

Forumthread: Dateien aktualisieren per Button (Makro)

Dateien aktualisieren per Button (Makro)
10.07.2018 14:47:03
CL
Hallo Excel-Profis,
ich habe mittlerweile so einige aufeinander aufbauende Excel-Dateien die ich immer mühselig nacheinander öffne, speichere und dann beende.
Endlich kam ich nun auf die Idee das mit einem Makro per Button-Klick zu lösen :-D.
Ich möchte die Reihenfolge festlegen und am Besten beim Öffnen der Arbeitsmappe, in der ich den Button integrieren will, ein Formular einblenden oder eine MsgBox.
Ich habe etwas recherchiert und habe bei http://www.hajo-excel.de/ gesehen, dass man MsgBoxen für eine bestimmte Zeit einblenden lassen kann, ggf. wäre das eine Lösung.
Meine konkrete Frage zu dieser Thematik:
Gibt es eine eleganter Lösung als nachfolgende?
  • 
    Private Sub CommandButton1_Click()
    Dim Mappe1 As String, Mappe2 As String, Mappe3 As String ...
    Mappe1 = "Pfad"
    Mappe2 = "Pfad"
    Mappe3 = "Pfad"
    Workbooks.Open Filename:=Mappe1, UpdateLinks:=3
    ActiveWorkbook.Close Save Changes=True
    Workbooks.Open Filename:=Mappe2, UpdateLinks:=3
    ActiveWorkbook.Close Save Changes=True
    Workbooks.Open Filename:=Mappe3, UpdateLinks:=3
    ActiveWorkbook.Close Save Changes=True
    End Sub
    


  • Wie kann ich das in ein UserForm oder eine MsgBox beim Start der entsprechenden Datei mit diesem Aktions-Button einblenden - mit einem "OK-" und "Abbrechen-Button"? Ein kleines nettes Extra wäre noch das Feature "Wenn keine Reaktion vom User erfolgt, soll das Fenster nach einigen (z.B. 3) Sekunden wieder verschwinden".
    Wäre super hilfreich wenn mir jemand hier auf die Sprünge helfen könnte :-).
    Gruß,
    Chris
    Anzeige

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Dateien aktualisieren per Button (Makro)
    10.07.2018 16:02:21
    Rob
    Du kannst die Userform oder die MsgBox über das Workbook-Event Private Sub Workbook_Open() beim Öffnen der Datei automatisch aufrufen lassen.
    Die Excel-Dateien kannst du mit Scripting.FileSystemObject (Verweis auf Microsoft Scripting Runtime für early binding) elegant durchschleifen und öffnen. Bei lediglich drei Dateien und festen Pfaden ist allerdings die Frage, ob es den Aufwand wert ist. Ist auf jeden Fall eleganter, da objektorientiert. :-)
    Anzeige
    AW: Dateien aktualisieren per Button (Makro)
    10.07.2018 17:49:41
    CL
    Hi Rob,
    danke für die Hinweise, ich werde mich daran mal versuchen.
    Nur nochmal explizit bzgl. deinem Verbesserungsvorschlag, es sind um die 15 Dateien, 3 war nur beispielhaft.
    Die Pfade sind an sich fix und auch total verteilt, also nicht alle in einem Ordner.
    Könntest du oder jemand mir eine Hilfestellung für eine bessere Lösung geben, ich weiß nicht wie du das genau meinst.
    Danke!
    Gruß,
    Chris
    Anzeige
    AW: Dateien aktualisieren per Button (Makro)
    10.07.2018 21:09:48
    Rob
    Du kannst es auch so lösen (beispielhaft für einen Pfad):
    
    Sub DateienÖffnen()
    Dim Mappe1 As String
    Dim DateiName As String
    Mappe1= "Pfad"
    DateiName = Dir(Mappe1 & "*.xlsx") ' ""
    Workbooks.Open Mappe1 & DateiName, _ '

    AW: Dateien aktualisieren per Button (Makro)
    10.07.2018 23:14:36
    Rob
    Die besagte objektorientierte Methode funktioniert wie folgt (als Anmerkung immer nochmal die early binding-Methode mit dem Verweis auf Microsoft Scripting Runtime). Den Code musst Du allerdings für Dich noch anpassen (Quellpfad, Datei-Endungen für die If-Schleife, etc).
    Welche Methode Du verwendest, prozess- oder objektorientiert, bleibt Dir überlassen. Letztere gilt aber die "schickere".
    
    Sub LoopThroughFilesWithFSO()
    'Dim fso As Scripting.FileSystemObject
    Dim fso As Object
    'Dim Ordner As Scripting.Folder
    Dim Ordner As Object
    'Dim Datei As Scripting.File
    Dim Datei As Object
    Dim Quellpfad As String
    Quellpfad = "Pfad"
    'Set fso = New Scripting.FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Ordner = fso.GetFolder(Quellpfad)
    For Each Datei In Ordner.Files
    If Datei.Name Like "*.xlsm" Then
    Workbooks.Open Datei
    ActiveWorkbook.Close
    End If
    Next Datei
    End Sub
    

    Anzeige
    AW: Dateien aktualisieren per Button (Makro)
    11.07.2018 08:39:45
    CL
    Hi Rob,
    Danke Dir für deine Hilfe!
    Ich habe soeben die prozessorientierte Methode getestet und das ist tatsächlich deutlich eleganter :-).
    Die Andere werde ich auch noch probieren und mich dann festlegen.
    Auf jeden Fall nochmals vielen Dank für deine Mühe!
    Gruß,
    Chris
    AW: Dateien aktualisieren per Button (Makro)
    11.07.2018 09:18:13
    CL
    Hi Rob,
    einen Frage habe ich doch noch, hoffe du bemerkst diese noch:
    Ist es bei der prozessorientierten Methode möglich zusätzlich den PFAD und gleichzeitig bspw. den ersten oder die ersten beiden Buchstabe des Dateinamens mit einzubinden?
    Also, dass es unter dem Pfad alle Dateien mit "A" als Anfangsbuchstaben - und natürlich der entsprechenden .xl*-Endung - gesucht werden.
    Gruß,
    Chris
    Anzeige
    AW: Dateien aktualisieren per Button (Makro)
    11.07.2018 09:31:25
    CL
    Sorry, hat sich erledigt, hab's doch hinbekommen.
    Danke Dir nochmals!
    Gruß,
    Chris
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Dateien aktualisieren per Button (Makro)


    Schritt-für-Schritt-Anleitung

    Um Excel-Daten per Button zu aktualisieren, kannst du ein Makro erstellen, das beim Klicken auf einen Button ausgeführt wird. Folge diesen Schritten:

    1. Öffne Excel und gehe zu Entwicklertools. Falls der Tab nicht sichtbar ist, aktiviere ihn über die Optionen.

    2. Füge einen Button hinzu:

      • Wähle Einfügen und dann Schaltfläche (Formularsteuerelement).
      • Zeichne die Schaltfläche auf dein Arbeitsblatt.
    3. Weise ein Makro zu:

      • Nach dem Zeichnen öffnet sich ein Fenster zur Zuweisung eines Makros. Klicke auf Neu, um ein neues Makro zu erstellen.
    4. Füge folgenden VBA-Code ein:

      Private Sub CommandButton1_Click()
         Dim Mappe1 As String
         Mappe1 = "Pfad\zu\deiner\Datei.xlsx"
         Workbooks.Open Filename:=Mappe1, UpdateLinks:=3
         ActiveWorkbook.Close SaveChanges:=True
      End Sub
    5. Passe den Pfad an: Ändere Pfad\zu\deiner\Datei.xlsx auf den tatsächlichen Pfad deiner Datei.

    6. Teste den Button: Klicke auf den Button, um das Makro auszuführen und die Datei zu öffnen.


    Häufige Fehler und Lösungen

    • Fehler: "Datei nicht gefunden"
      Lösung: Überprüfe den Pfad auf Schreibfehler und stelle sicher, dass die Datei tatsächlich existiert.

    • Fehler: Makro wird nicht ausgeführt
      Lösung: Stelle sicher, dass die Makros in deinen Excel-Einstellungen aktiviert sind.

    • Fehler: Arbeitsmappe schließt nicht
      Lösung: Stelle sicher, dass SaveChanges auf True gesetzt ist, damit Änderungen gespeichert werden.


    Alternative Methoden

    Wenn du mehrere Dateien auf einmal aktualisieren möchtest, kannst du die FileSystemObject-Methode verwenden. Hier ist eine einfache Methode, um alle .xlsx-Dateien in einem bestimmten Ordner zu öffnen:

    Sub DateienÖffnen()
        Dim fso As Object
        Dim Ordner As Object
        Dim Datei As Object
        Dim Quellpfad As String
        Quellpfad = "Pfad\zum\Ordner\"
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set Ordner = fso.GetFolder(Quellpfad)
        For Each Datei In Ordner.Files
            If Datei.Name Like "*.xlsx" Then
                Workbooks.Open Datei.Path, UpdateLinks:=3
                ActiveWorkbook.Close SaveChanges:=True
            End If
        Next Datei
    End Sub

    Praktische Beispiele

    1. Einfaches Makro für eine Datei:

      Sub EinfacheDateiAktualisierung()
         Workbooks.Open "C:\Daten\Datei1.xlsx", UpdateLinks:=3
         ActiveWorkbook.Close SaveChanges:=True
      End Sub
    2. Makro für mehrere Dateien:

      Sub MehrereDateienAktualisieren()
         Dim Dateien As Variant
         Dateien = Array("C:\Daten\Datei1.xlsx", "C:\Daten\Datei2.xlsx", "C:\Daten\Datei3.xlsx")
         Dim i As Integer
         For i = LBound(Dateien) To UBound(Dateien)
             Workbooks.Open Dateien(i), UpdateLinks:=3
             ActiveWorkbook.Close SaveChanges:=True
         Next i
      End Sub

    Tipps für Profis

    • Benutze MsgBox zur Bestätigung: Vor dem Schließen der Arbeitsmappe kannst du eine MsgBox einblenden, um den Benutzer zu fragen, ob er die Änderungen speichern möchte.

    • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um Fehler abzufangen und zu verhindern, dass das Makro stoppt.

    • Schnellzugriff auf Makros: Füge einen Excel-Refresh Button in deine Schnellzugriffsleiste ein, um den Zugriff auf die Aktualisierungen zu erleichtern.


    FAQ: Häufige Fragen

    1. Wie kann ich einen Excel aktualisieren Button erstellen?
    Du kannst einen Button über die Entwicklertools hinzufügen und ein Makro zuweisen, das die gewünschten Dateien öffnet.

    2. Funktioniert das Makro in allen Excel-Versionen?
    Ja, die beschriebenen Methoden sollten in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

    3. Was ist der Unterschied zwischen prozessorientierten und objektorientierten Methoden?
    Prozessorientierte Methoden fokussieren auf die Schritte zur Durchführung von Aufgaben, während objektorientierte Methoden eine strukturierte Programmierung unter Verwendung von Objekten und deren Eigenschaften nutzen.

    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