www.mikrocontroller.net

Forum: PC-Programmierung Excel VBA, Timer in eigenen Thread


Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe eine Excelanwendung, in der ich zyklisch eine Messkarte 
auslesen und in ein Excelfeld schreiben möchte. Nun soll dies jede 
Sekunde passieren. Dazu habe ich mir unter Verwendung der user32.dll 
einen Timer programmiert, der auch schon prima läuft. Nun dachte ich, 
ich mache einfach wie beim uC: Timer an und dann

While(Wartezeit < TimerZeit) 'warte einfach

Dummerweise muss dazu der Timer in einem eigenen Thread laufen, weil, 
wie ich festgestellt habe, in der While-schleife auch der Timer 
stehenbleibt.
Wie kann ich in Excel VBA für den Timer einen eigenen Tread anlegen?

Gruß, Alex

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal folgende Seite an:

http://www.cpearson.com/Excel/OnTime.aspx

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: Damit habe ich auch schon gearbeitet:

http://vb.mvps.org/samples/TimerObj/

Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

danke für die schnelle Antwort. Genau den Timer aus dem ersten Link 
verwende ich und er läuft auch. Allerdings muss ich ihn in einen eigenen 
Thread packen, damit er unabhängig ist vom Rest des Programms. Habe es 
jetzt aber anders gelöst, indem ich den relevanten Code in der Sub 
TimerProc ausführe und keine Warteschleife verwende. Aber prinzipiell 
würde ich gern wissen, ob das in VBA geht, einen Extrathread für den 
Timer zu starten.

Gruß, Alex

Autor: Exce(l)ntriker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alexander,

kennst du irgendeine verlässliche Aussage über die Threadsicherheit von 
Excel-VBA? Vom Hörensagen würde ich tippen, es ist nicht Threadsicher.

Lass mich gerne aufklären, wenn ich unrecht hab.

Grüße

Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

dazu kann ich leider auch nichts sagen. Hab's, wie oben beschrieben, 
anders gelöst, aber wäre schön gewesen ;-)

Gruß und frohes Neues,

Alex

Autor: Exce(l)ntriker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, danke für deine Antwort. (Ich selbst gehe auch anders vor)

Wünsche ebenso ein frohes Neues!

Autor: Alexander H. (ill_son)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss nochmal nachfragen, wie Du's genau gelöst hast. Hast Du auch den 
auszuführenden Code in die Timer-Sub gepackt oder hast Du die Wartezeit 
anders realisiert?

Gruß, Alex

Autor: Exce(l)ntriker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alexander,

entschuldige bitte dass ich falsche Hoffnungen gemacht habe, aber meine 
Anwendung (für die ich über Threading nachgedacht habe) implementiert 
gar keinen Timer. Meine Gedanken gingen in eine ganz andere Richtung, 
ich habe hier nur meine Frage in den Raum geworfen - ich wollte nicht 
den Thread kapern, sorry nochmals.

Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.