Problem Excel mit Erzeugung einer Macroschleife

Registrierte und angemeldete Benutzer sehen den BMW-Treff ohne Werbung
  • Hallo ich habe meine Frage schon bei wer weiß was gestellt.
    aber da kann man ja, sowie es aussieht nicht antworten :(, somit bringt das nichts.


    daher möchte ich hier gern die frage stellen.



    Hallo,


    erst einmal möchte ich mich bedanken für die vielen hilfreichen Tipps von dieser Seite.


    Doch leider habe ich ein Problem, welches sich nicht so leicht, für mich zu mindestens, lösen lässt.


    Ich habe vor einiger Zeit ein Strahlungsmessgerät gekauft, welches mittels USB an den PC angeschlossen wird und in einer Excel Tabelle die Daten sammelt.


    Dieses Datensammeln findet über das programmierte Makro statt.
    Ich brauche also nur auf den Knopf zu klicken und die aktuellen Daten werden von Messgerät übertragen.
    Automatisch wird immer eine neue Zeile begonnen.


    Das Problem, diese Arbeitsweise ist nicht für Langzeitmessungen geeignet, da ich immer selbstständig den Klick auslösen muss und somit theoretisch 24 h lang alle 5 min klicken muss.


    Nun habe ich heute den ganzen Tag im Internet herumgelesen um einen Automatismus zu finden, welcher mir automatisch dieses Makro alle 5 min startet und zusätzlich auch die Uhrzeit in die dahinter liegende Spalte schreibt und dann wieder in die
    Zeile springt und ist in 5 min erneut ausführt.


    Ich habe viel im Internet gefunden, aber leider scheint es wohl an meinem Wissen und Implementierung zu liegen, das es nicht geht.
    Das einzige was ich nun hinbekommen habe, ist das Makro um die aktuelle Uhrzeit zu bekommen.


    Das andere Makro, was mir automatisch immer die Messung alle 5 Min starten soll klappt leider nicht in meinem Excel 2010.


    Kennt sich jemand eventuell damit aus, so dass es mir jemand hierbei behilflich sein könnte?
    Gerne kann ich euch auch die Excel Tabelle senden, wenn es euch hilft einen besseren Überblick zu bekommen.


    ich bin heute weitergekommen


    und kann mit beiden makros die messabfrage starten und nach 10 sek. kommt der ergebnis.
    leider bekomme ich aber keine schleife hin, das er alle 10 sek. abfragt so lange bis ich stoppe.


    folge code habe ich benutzt und beide bewirken das gleiche aktuell bei mir,


    Option Explicit
    Sub test()
    Debug.Print Now
    Application.OnTime Now + TimeSerial(0, 0, 10), "X1_3_Hazard_Read_Data"
    End Sub




    Public Sub test2()
    Application.OnTime Now + TimeValue("0:0:3"), "X1_3_Hazard_Read_Data"
    End Sub ...
    "X1_3_Hazard_Read_Data" ist der Macroname, welchen ich ausführen will,
    selbstständig, jede Minute neu für 24h.


    Mit dem obigen Code schaffe ich aber nur eine Abfrage (testweise auf 10sek.), jedoch gelingt mir die schleife nicht.


    Nochmal kurz was ich möchte:


    Abfrage der Werte des Messgeräts über das Macro "X1_3_Hazard_Read_Data".
    In die nächste Zeile.
    1 Minute später, erneute Abfrage der Werte des Messgeräts über das Macro "X1_3_Hazard_Read_Data".
    In die nächste Zeile.


    und so weiter.

  • und getest zu haben, wie sieht es damit aus?


    Application.Wait Now + TimeValue("00:00:10")


    Gruß


    Thorsten

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

  • probiere ich nun, also du meinst das einfach nur
    Application.OnTime Now + TimeValue("0:0:3"), "X1_3_Hazard_Read_Data"
    erstezen?


    nur was ist der grobe unterschied zwischen den beiden codes oben?
    sie bewirken ja das gleiche

  • Hi,


    Ich werde morgen früh mal eine for ... Next Schleife testen, hoffe das reicht dir zeitlich, oder goto nach dem wait. Mal schauen was geht.


    Gruß


    Tor

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

  • Ich habe an sich keine Ahnung von VBA (und generell vom Programmieren) und muss mir selbst immer alles aus dem Netz suchen, was ich für Makros benötige...


    ...aber, nur mal als simple Idee, muss es nicht hier statt:
    Option Explicit
    Sub test()
    Debug.Print Now
    Application.OnTime Now + TimeSerial(0, 0, 10), "X1_3_Hazard_Read_Data"
    End Sub


    so lauten:
    Option Explicit
    Sub test()
    For Abfrage = 1 to 1000
    Debug.Print Now
    Application.OnTime Now + TimeSerial(0, 0, 10), "X1_3_Hazard_Read_Data"
    Next Abfrage
    End Sub

    Diese Signatur enthält unsittliche Bilder und wurde vom Server geblockt.

  • Hi,


    so gehts bei mir:


    Das die application angehaltin wird ist natürlich nicht der Hit, ich überlege mal ob mir noch was weniger dreckiges einfällt.


    Gruß


    Thorsten



    Edith:


    ich hab es, mit ontime einfach immer sich selber aufrufen, also keine 2 Makros, sondern nur eins



    PHP
    Sub Schleife()
    MsgBox ("läuft")
    
    
    Application.OnTime Now() + TimeValue("00:00:10"), "Schleife"
    
    
    
    
    End Sub

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

    Einmal editiert, zuletzt von tor ()

  • also keine 2 Makros, sondern nur eins

    Das hatte ich auch nicht verstanden, warum es zwei Makros sein sollen.


    Entweder Deine Idee, dass sich das Makro selbst wieder aufruft, oder einfach goto 1 am Ende des Makro, oder for-next-Schleife in das Makro rein und dann sollte es laufen.

    Diese Signatur enthält unsittliche Bilder und wurde vom Server geblockt.

  • Nur mal als Anregung, da Excel ja nun eigentlich nicht das Werkzeug der Wahl für solche Sachen ist. Bietet das Gerät keine andere Möglichkeit die Daten auszulesen?

  • Hi,


    du solltest dir übrigens noch einen Knopf mit


    Public Sub Timer_Off()
    Application.OnTime Now() + TimeValue("00:00:10"), "Schleife" , , False
    End Sub




    bauen, der die Schleife unterbricht, da das onTime ja in der application läuft und nicht im code, kriegst du es sonst nicht mehr aus :D

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

    2 Mal editiert, zuletzt von tor ()

  • Hi Tor!


    jetzt hab ich deine Nachricht zu spät gesehen :(
    Die Messung läuft seit 10 Uhr mit folgendem Code nun:



    Sub Intervall()


    Dim NextTime As Date
    NextTime = Now + TimeValue("00:00:10") 'Zeitintervall festlegen, hier 15 Minuten
    Application.OnTime NextTime, "Intervall"
    X1_3_Hazard_Read_Data 'Eingabe von Schritt, der wiederholt werden soll
    End Sub


    Aber das Ding ist nicht Perfekt, wie du schon sagst.
    Knopf wäre gut, zum Starten und Stoppen des MAcros.
    Fehlt alles nun.


    Und vor allen benötige ich die Uhrzeit mit in jede Zeile. A-D sind ja Messwerte und in E wäre die Uhrzeit toll.
    Da fängt nur das Problem an, da das orignal Messmacro nach jeder Abfrage in die neue Zeile geht.
    Ich bin dafür zu schlecht im original Macro was zu ändern.
    Da ich nicht weit von Hagen weg bin und eh in den nächsten Wochen nach Petzolts muß, hast du da evt. einmal Zeit zum gemeinsamen ansehen?
    Würde mich sehr freuen, wenn das klappen würde, da du ja wirklich Ahnung hast und ich mir doch dabei sehr das Bein breche.

  • Wenn wir hier gerade bei VBA sind hab ich auch mal eine Frage.


    Ich habe eine Excel-Datei die per VBA automatisch nach der Eingabe einen Ausschnitt aus dieser Arbeitsmappe als html-Datei speichert. Diese wird dann im Internet veröffentlicht. Es handelt sich dabei um einen Liveticker.


    Bei Webseiten kann man ja irgendwie einstellen, dass sich diese alle z.B. einer Minute automatisch neu lädt. Kann man so etwas auch einbauen, wenn man die HTML-Datei aus Excel heraus speichert.


    Der Code zum speichern schaut derzeit so aus:
    With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _
    "C:xxx.html", "web", "$A$1:$E$20", xlHtmlStatic, _
    "Liveticker", "")
    .Publish (True)
    .AutoRepublish = False
    End With


    Wenn sich die Webseite ändert muss man im Browser aber immer selbst auf "aktualisieren" bzw. "neu laden" klicken. Geht das nicht irgendwie auch automatisch?

    Diese Signatur enthält unsittliche Bilder und wurde vom Server geblockt.

  • Und vor allen benötige ich die Uhrzeit mit in jede Zeile. A-D sind ja Messwerte und in E wäre die Uhrzeit toll.


    gib mir doch mal die Zeile aus dem Code der die Meßwerte in die Tabelle eintägt, dann
    häng ich dir datum und Uhrzeit an.


    Gruß


    Thorsten

    Deshalb wird man ja auch nirgends aus der Kneipe geschmissen. Wer dort andere Gäste aber dauerhaft und ständig nervt muss irl. mit paar aufs Maul rechnen. Hier geht das ja leider kaum aufgrund der Entfernung

  • So hab ich das hier funktionierend in einer ganz anderen Sache:


    Sub Aktualisieren()

    --> Was auch immer du ausführen willst

    End Sub

    Sub Intervall()
    Dim NextTime As Date
    NextTime = Now + TimeValue("00:15:00") 'Zeitintervall festlegen, hier 15 Minuten
    Application.OnTime NextTime, "Intervall"
    Call Aktualisieren 'Eingabe von Schritt, der wiederholt werden soll

    End Sub

    --> Und dann das Makro "Intervall" einmalig aufrufen und die Kiste stehen lassen.