Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

macro alle 30 sek. wiederholen

Forumthread: macro alle 30 sek. wiederholen

macro alle 30 sek. wiederholen
07.06.2015 15:47:54
Uwe
Einen schönen Sonntag an Alle,
wie bekomme ich es hin das ein Macro nach Ablauf einer gewissen Zeit sich wiederholt.
Es geht im Grunde nur um eine eingelesene txt Datei automatisch zu aktualisieren.
Option Explicit
Private Sub Workbook_Open()
Application.OnTime Now + TimeSerial(0, 0, 30), "autoakt2"
End Sub
so wie ich das dachte wird hier nur nach 30 sek. das macro angestoßen und sonst nix.
Vorab schon mal vielen Dank für euer Hilfe!
Gruß Uwe

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: macro alle 30 sek. wiederholen
07.06.2015 15:53:18
Sepp
Hallo Uwe,
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
  StartTimer
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
  StopTimer
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public RunWhen As Double
Public Const cRunIntervalSeconds = 1800 ' Intervall in Sekunden
Public Const cRunWhat = "autoakt2"

Sub StartTimer()
  RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds)
  Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
    schedule:=True
End Sub


Sub autoakt2()
  
  MsgBox "Test"
  
  StartTimer
  
End Sub


Sub StopTimer()
  On Error Resume Next
  Application.OnTime earliesttime:=RunWhen, _
    procedure:=cRunWhat, schedule:=False
End Sub


Gruß Sepp

Anzeige
cRunIntervalSeconds = 30 , für einen ...
07.06.2015 15:56:09
Sepp
... 30 Sekunden Interval!
Gruß Sepp

AW: macro alle 30 sek. wiederholen
07.06.2015 16:04:11
Daniel
HI
du musst das Application.Ontime auch im Makro "autoakt2" ausführen, das Makro muss sich also immer selbst aufrufen.
allerdings musst du hierbei beachten, dass du den zuletzt gemachten Aufruf zurücknimmst, wenn du die Datei schließt.
ansonsten wird sich die Datei nach den 30 sec. öffnen und das Makro ausführen.
daher brauchst du folgende Codes noch zusätzlich:
1. in einem allgemeinen Modul
Option Explicit
Public NächsteStartzeit as Date
Sub autoakt2()
NächsteStartzeit = Now + TimeSerial(0, 0, 30)
Application.Ontime NächsteStartzeit, "autoakt"
End Sub
2. im Modul "DieseArbeitsmappe"
Private Sub Workbook_Open()
NächsteStartzeit = Now + TimeSerial(0, 0, 30)
Application.OnTime NächsteStartzeit, "autoakt2"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
if NächsteStartzeit > Now then Application.Ontime NächsteStartzeit, "autoakt2", schedule:=false
End Sub

wenns aber nur um das reine Aktualisieren der Textdatei ohne weiter Markos geht, dann kannst du auch so vorgehen:
- importiere die Textdatei über die Importfunktion DATEN - EXTERNE DATEN - AUS TEXT
- stelle in den DATENBEREICHSEIGENSCHAFTEN das entsprechende Aktualisierungsintervall ein.
(kannst du auch nachträglich über das Kontextmenü hinzufügen (rechte Maustaste auf eine Zelle des Imports))
Gruß Daniel

Anzeige
AW: macro alle 30 sek. wiederholen
07.06.2015 18:07:14
Uwe
So nun hab ich es am laufen!!!!!
Lieben Dank an Sepp und Daniel.
Noch einen schönen Restsonntag!
Gruß Uwe
Anzeige
Anzeige

Infobox / Tutorial

Makros in Excel alle 30 Sekunden wiederholen


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel alle 30 Sekunden automatisch auszuführen, kannst Du die folgende Vorgehensweise nutzen. Die Anleitung basiert auf VBA (Visual Basic for Applications).

  1. Öffne VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Füge den folgenden Code ein:
Option Explicit
Public NächsteStartzeit As Date

Sub autoakt2()
    NächsteStartzeit = Now + TimeSerial(0, 0, 30)
    Application.OnTime NächsteStartzeit, "autoakt2"
    MsgBox "Makro wurde ausgeführt!"
End Sub

Private Sub Workbook_Open()
    NächsteStartzeit = Now + TimeSerial(0, 0, 30)
    Application.OnTime NächsteStartzeit, "autoakt2"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime NächsteStartzeit, "autoakt2", schedule:=False
End Sub
  1. Schließe den VBA-Editor und speichere Deine Excel-Datei als Makro-aktivierte Datei (.xlsm).
  2. Starte das Makro: Beim Öffnen der Datei wird das Makro automatisch gestartet und alle 30 Sekunden ausgeführt.

Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und aktiviere die entsprechenden Optionen.
  • Fehler: Die Datei schließt sich und das Makro wird trotzdem ausgeführt.

    • Lösung: Stelle sicher, dass der Code im Workbook_BeforeClose korrekt implementiert ist, um das Makro vor dem Schließen der Datei zu stoppen.

Alternative Methoden

Wenn das Ziel nur darin besteht, eine Textdatei regelmäßig zu aktualisieren, kannst Du auch die Datenimport-Funktion nutzen:

  1. Gehe zu Daten > Externe Daten > Aus Text.
  2. Wähle die gewünschte Textdatei aus.
  3. Klicke mit der rechten Maustaste auf eine der importierten Zellen und wähle Datenbereichseigenschaften.
  4. Stelle das Aktualisierungsintervall ein (z.B. alle 30 Sekunden).

Diese Methode benötigt keinen VBA-Code und ist eine einfache Möglichkeit, die Daten zu aktualisieren.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du das Makro verwenden kannst:

  1. Erstelle eine Excel-Datei mit einem beliebigen Inhalt.
  2. Implementiere das oben genannte Makro.
  3. Wenn Du die Datei öffnest, wird alle 30 Sekunden eine Nachricht angezeigt, die bestätigt, dass das Makro ausgeführt wurde.

Tipps für Profis

  • Verwende Excel-Befehle: Nutze den excel befehl wiederholen shortcut, um Deine Makros effizient zu steuern.
  • Optimiere die Performance: Achte darauf, dass die auszuführenden Aufgaben im Makro nicht zu rechenintensiv sind, da dies die Performance beeinträchtigen kann.
  • Testen vor dem Einsatz: Teste das Makro in einer Kopie Deiner Datei, um unerwünschte Effekte zu vermeiden.

FAQ: Häufige Fragen

1. Wie stoppe ich ein laufendes Makro?
Du kannst das Makro stoppen, indem Du die Excel-Datei schließt oder die Workbook_BeforeClose-Routine korrekt implementierst, wie im Code gezeigt.

2. Funktioniert das auch in Excel Online?
VBA-Makros funktionieren nicht in Excel Online. Du musst die Desktop-Version von Excel verwenden.

3. Kann ich das Intervall anpassen?
Ja, ändere einfach den Wert von cRunIntervalSeconds im Code, um das Intervall nach Deinen Wünschen zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige