Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro nur in bestimmter Datei ausführen

Makro nur in bestimmter Datei ausführen
10.05.2017 14:26:17
Ulquiorra
Hallo liebe Community,
ich habe in einer Zeiterfassungs-Datei ein auto_Open-Makro programmiert, welches u.a. dafür sorgt, dass sich diese Datei jede Minute aktualisiert.
Das Problem ist, dass dieses Makro im Hintergrund weiterläuft, trotz das die Datei in der es sich befindet bereits geschlossen ist. D.h.: Schließe ich die Zeiterfassungs-Datei, habe aber noch andere Excel-Dateien offen, so öffnet sich die Zeiterfassungs-Datei nach einer Minute (bzw. bei Aktualisierung) wieder von selbst.
Mein Quellcode sieht wie folgt aus:
Sub auto_Open()
Worksheets("Zeiterfassung").Range("Q23") = Environ("UserName")
MsgBox "Guten Morgen! :)"
If ActiveWorkbook.Name  "Zeiterfassung_fertig_4.3_Makro.xlsm" Then Exit Sub
Application.OnTime Now + TimeValue("00:00:01"), "a"
End Sub

______________________________________________________________________________
Sub a()
Calculate
Application.OnTime Now + TimeValue("00:01:00"), "a"
End Sub
Hat jemand eine Lösung, wie ich dieses Problem umgehen kann?
Vielen Dank im Voraus! :)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Makro nur in bestimmter Datei ausführen
10.05.2017 14:36:26
Daniel
Hi
du musst beim Schließen der Datei den zuletzt gemachten OnTime-Aufruf widerrufen.
hierzu musst du dir Startzeit in einer Projektweit gültigen Variablen merken.
hierzu:
in einem allgemeinen Modul:
Public NächsteStartZeit as date
Sub a()
Calculate
NächsteStartZeit = Now + TimeValue("00:01:00")
Application.OnTime NächsteStartZeit , "a"
End Sub
Im Modul "DieseArbeitsmappe"
Private Sub Workbook_Open()
Worksheets("Zeiterfassung").Range("Q23") = Environ("UserName")
MsgBox "Guten Morgen! :)"
If ActiveWorkbook.Name  "Zeiterfassung_fertig_4.3_Makro.xlsm" Then Exit Sub
NächsteStartZeit = Now + TimeValue("00:00:01")
Application.OnTime NächsteStartZeit , "a"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If NächsteStartZeit > Now Then Application.OnTime NächsteStartZeit, "a", schedule:=False
End Sub
Gruß Daniel
Anzeige
AW: Makro nur in bestimmter Datei ausführen
10.05.2017 14:55:46
Ulquiorra
Hallo Daniel,
vielen Dank für die schnelle Antwort!
ich habe beide Quellcodes jetzt genauso übernommen, dennoch tritt das gleiche Problem noch immer auf.
AW: Makro nur in bestimmter Datei ausführen
10.05.2017 15:12:20
Ulquiorra
Okay, es funktioniert jetzt.
Aus irgendeinem Grund hat es anfangs nicht geklappt, jetzt aber schon.
Vielen Dank nochmal. :)
Anzeige
AW: Makro nur in bestimmter Datei ausführen
11.05.2017 15:53:17
Ulquiorra
Hallo,
Entschuldigung für das ganze hin und her. Seit heute ist es wieder so, dass das Makro trotzdem im Hintergrund weiter läuft und sich die Datei nach spätestens 1er Minute wieder öffnet. Der Quellcode ist exakt der Selbe wie von dir angegeben.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro nur in bestimmter Datei ausführen


Schritt-für-Schritt-Anleitung

Um sicherzustellen, dass Dein Makro nur in einer bestimmten Excel-Datei ausgeführt wird, kannst Du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem Du ALT + F11 drückst.

  2. Füge ein allgemeines Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDateiName)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Public NächsteStartZeit As Date
    
    Sub a()
       Calculate
       NächsteStartZeit = Now + TimeValue("00:01:00")
       Application.OnTime NächsteStartZeit, "a"
    End Sub
  4. Füge den Code im Modul "DieseArbeitsmappe" hinzu:

    Private Sub Workbook_Open()
       Worksheets("Zeiterfassung").Range("Q23") = Environ("UserName")
       MsgBox "Guten Morgen! :)"
       If ActiveWorkbook.Name <> "Zeiterfassung_fertig_4.3_Makro.xlsm" Then Exit Sub
       NächsteStartZeit = Now + TimeValue("00:00:01")
       Application.OnTime NächsteStartZeit, "a"
    End Sub
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       If NächsteStartZeit > Now Then Application.OnTime NächsteStartZeit, "a", Schedule:=False
    End Sub
  5. Speichere die Datei als Excel-Arbeitsmappe mit Makros (*.xlsm).


Häufige Fehler und Lösungen

  • Fehler: Makro startet auch in anderen geöffneten Dateien.

    • Lösung: Stelle sicher, dass der Name der Datei, in der das Makro ausgeführt werden soll, im Code korrekt angegeben ist. Überprüfe die Bedingung in Workbook_Open().
  • Fehler: Makro wird nicht gestoppt.

    • Lösung: Überprüfe, ob der Workbook_BeforeClose Code korrekt implementiert ist. Der Application.OnTime Aufruf muss richtig zurückgesetzt werden.

Alternative Methoden

Eine alternative Methode, um das Makro nur in einer bestimmten Datei auszuführen, ist die Verwendung von Excel-Add-Ins oder die Implementierung von UserForms, die spezifische Daten abfragen, bevor das Makro ausgeführt wird. Diese Techniken können helfen, die Steuerung über die Ausführung des Makros zu verbessern.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das zeigt, wie Du das Makro für eine Zeiterfassung-Datei nutzen kannst:

  1. Erstelle eine neue Excel-Datei und nenne sie Zeiterfassung_fertig_4.3_Makro.xlsm.
  2. Füge das oben genannte Makro in das Modul und die Arbeitsmappe ein.
  3. Teste das Makro, indem Du die Datei öffnest und schließt, um sicherzustellen, dass es nur in dieser speziellen Datei aktiv ist.

Tipps für Profis

  • Verwende Debug.Print im Code, um Fehler und Statusmeldungen in der Sofort-Fenster des VBA-Editors anzuzeigen.
  • Nutze Fehlerbehandlung, um sicherzustellen, dass das Makro bei Problemen nicht abstürzt.
  • Halte Deinen Code modular, um die Wartbarkeit zu verbessern und zukünftige Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nicht, obwohl der Code korrekt aussieht?
Es könnte sein, dass Du die Datei nicht als Makro-fähige Arbeitsmappe gespeichert hast. Achte darauf, die Datei im Format .xlsm zu speichern.

2. Wie kann ich das Makro anpassen, um es in einer anderen Datei auszuführen?
Ändere einfach den Namen in der If-Bedingung in der Workbook_Open-Subroutine, um die gewünschte Datei zu referenzieren.

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