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

Forumthread: Mit Makro Datei öffnen und ein Makro ausführen

Mit Makro Datei öffnen und ein Makro ausführen
18.11.2014 21:35:45
Golem
Hallo Excel-Fachleute,
ich habe vom Marc Wershoven ein Makro, mit dem Änderungen in mehreren Dateien automatisch
vorgenommen werden können.
Option Explicit
' ************************************************************************************************
' Autor und Copyright: Marc Wershoven - IT / EDV Dienstleistungen und Beratung
' Homepage: http://www.wershovenonline.de - E-Mail: info@wershovenonline.de
' ------------------------------------------------------------------------------------------------
' Wichtige Hinweise:
' - Verwendung der Quelltexte auf eigene Gefahr!
' - Bitte beachten Sie die Nutzungsbedingungen von www.online-vba.de!
' - Dieser Hinweis inkl. Autorennennung darf nicht entfernt werden!
' - Jede Weiterübermittlung, Veröffentlichung oder Verbreitung ist untersagt!
' - Eine kommerzielle/gewerbliche Verwendung ist nicht gestattet!
' ************************************************************************************************
' Diese Hinweise beziehen sich auf den Quelltext, wie dieser unter dem folgenden Link, unverändert
' als Original zu sehen ist und gelten nicht für Veränderungen durch Nutzer bzw. Dritte:
' www.online-vba.de/vba_multidateiupdate.php
' ************************************************************************************************
' ACHTUNG: ALLE DATEIEN IN DEM ANGEGEBENEN PFAD WERDEN UNWIEDERRUFLICH GEÄNDERT!
' DENKEN SIE IMMER AN EINE AUSREICHENDE DATENSICHERUNG!!!
Sub MWMultiDateiUpdate()
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Application.ScreenUpdating = False 'Das "Flackern" ausstellen
'Schritt 1: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "C:\Dokumente und Einstellungen\Werner\Desktop\Zahlungen ET_2013\Umsatz  ET\"
sDatei = Dir(CStr(sPfad & "*.xl*")) 'Alle Excel Dateien
Do While sDatei  ""
'Schritt 2: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, False) 'nur lesend öffnen
'Änderungen durchführen, als Beispiel Zelle A1 mit "Hallo" befüllen
oSourceBook.Sheets(1).Cells(1, 1).Value = "Hallo"
'Schritt 3: Datei speichern und wieder zu machen und nächste Schleifenrunde
Application.DisplayAlerts = False
oSourceBook.Close True 'speichern
Application.DisplayAlerts = True
'Nächste Datei
sDatei = Dir()
Loop
Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten
'Variablen aufräumen
Set oSourceBook = Nothing
End Sub
Damit öffne ich automatisch aus einem geschlossenen Verzeichnis nacheinander 48 Dateien,
um in die Zelle A1 das Wort "Hallo" einzutragen.
Funktioniert auch einwandfrei.
Jetzt möchte ich aber nach jedem Öffnen der einzelnen Dateien ein bestimmtes Makro ausführen ( also nicht das
Eintragen von "Hallo" in Zelle A1 ).
Diese Zeile
oSourceBook.Sheets(1).Cells(1, 1).Value = "Hallo"
habe ich durch folgende Zeile ersetzt.
Application.Run ("Whn 1.xlsm!Test")
Das Makro zeigt nach dem Start den Laufzeitfehler 1004 an.
Auch nach dem Setzen von Hochkommatas
Application.Run ("'Whn 1.xlsm'!Test")
wird der Laufzeitfehler angezeigt.
Das Makro ist in der Tabelle1(Whn 1) vorhanden.
Wie kann das Makro "Test" ausgeführt werden?
Für evtl. Tipps oder Anregungen schon mal besten Dank!
Werner

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Makro Datei öffnen und ein Makro ausführen
19.11.2014 13:28:00
Rudi
Hallo,
in welcher Mappe steht denn MWMultiDateiUpdate?
Wenn das aufzurufende Makro nicht in einem Standardmodul steht, musst du den Codenamen der Tabelle angeben
Application.Run ("'Whn 1.xlsm'!Tabelle1.Test")
Gruß
Rudi

AW: Mit Makro Datei öffnen und ein Makro ausführen
19.11.2014 15:26:40
Golem
Hallo Rudi,
so wie Du es angegeben hast, funktioniert der Aufruf einwandfrei.
Ich habe das Makro nicht im Standardmodul eingebaut.
Ich hatte keine weitere Lösung mehr erkannt.
Einen schönen Dank für Deine Hilfe und noch einen schönen Tag.
Werner
Anzeige
;

Forumthreads zu verwandten Themen

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 Makro: Datei öffnen und Makro ausführen


Schritt-für-Schritt-Anleitung

  1. Makro erstellen: Öffne Excel und gehe zu Entwicklertools > Visual Basic. Hier kannst du ein neues Modul erstellen.

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

    Sub MWMultiDateiUpdate()
       Dim oSourceBook As Object
       Dim sPfad As String
       Dim sDatei As String
       Application.ScreenUpdating = False
       sPfad = "C:\Dein\Pfad\Zu\Den\Dateien\" ' Ändere den Pfad entsprechend
       sDatei = Dir(CStr(sPfad & "*.xl*"))
       Do While sDatei <> ""
           Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, False)
           Application.Run ("'Whn 1.xlsm'!Test") ' Führe das Makro aus
           oSourceBook.Close True
           sDatei = Dir()
       Loop
       Application.ScreenUpdating = True
       Set oSourceBook = Nothing
    End Sub
  3. Makro speichern: Speichere die Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).

  4. Makro aktivieren: Stelle sicher, dass in den Excel-Optionen die Makros aktiviert sind (Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros).

  5. Makro ausführen: Führe das Makro durch Entwicklertools > Makros > MWMultiDateiUpdate > Ausführen aus.


Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn das aufgerufene Makro nicht im richtigen Modul gespeichert ist. Stelle sicher, dass dein Makro im Standardmodul oder im richtigen Tabellenmodul vorhanden ist. Verwende den richtigen Aufruf:

    Application.Run ("'Whn 1.xlsm'!Tabelle1.Test")
  • Datei nicht gefunden: Überprüfe den Pfad im Code. Stelle sicher, dass der Pfad korrekt ist und die Dateien im angegebenen Verzeichnis existieren.


Alternative Methoden

  • Excel beim Öffnen Makro ausführen: Du kannst auch ein Makro automatisch ausführen lassen, wenn die Excel-Datei geöffnet wird. Füge dazu folgenden Code in das DieseArbeitsmappe-Modul ein:

    Private Sub Workbook_Open()
       Call MWMultiDateiUpdate
    End Sub
  • Excel Online: Beachte, dass die Ausführung von Makros in Excel Online nicht unterstützt wird. Das Makro muss in der Desktop-Version von Excel verwendet werden.


Praktische Beispiele

  • Makro für alle Excel-Dateien: Du kannst das Makro so anpassen, dass es alle Excel-Dateien in einem bestimmten Verzeichnis öffnet und ein spezifisches Makro ausführt. Dies ist besonders nützlich, wenn du Änderungen in mehreren Dateien gleichzeitig vornehmen möchtest.

  • Datenübertragung: Wenn du Daten aus einer Datei in eine andere kopieren möchtest, kannst du den Code anpassen, um die gewünschten Zellen zu übertragen.


Tipps für Profis

  • Debugging: Nutze die Debug.Print-Anweisung, um den Status deines Makros während der Ausführung zu überwachen und Fehler leichter zu identifizieren.

  • Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen in dein Makro, um unerwartete Probleme elegant zu lösen:

    On Error GoTo FehlerBehandlung
    ' Dein Code hier
    Exit Sub
    FehlerBehandlung:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich ein Makro automatisch ausführen, ohne die Datei zu öffnen?
Das ist nicht möglich. Ein Makro muss in einer geöffneten Excel-Datei ausgeführt werden.

2. Was mache ich, wenn das Makro nicht funktioniert?
Überprüfe, ob alle Pfade und Dateinamen korrekt sind und ob das aufgerufene Makro im richtigen Modul gespeichert wurde.

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