Forum: PC-Programmierung Daten in Excel einlesen: COM-Port RS232 -> Excel


von Micro C. (fischgebruell)


Lesenswert?

Hallo,
ich suche eine Möglichkeit Daten, die über die serielle Schnittstelle 
(COM-Port) kommen, in MS Excel automatisch zu importieren.

- Über den Com-Port kommen diese Daten hintereinnder:
  Bis zu 4100 Zeilen und 19 Spalten.
  Spalten jeweils mt TAB getrennt
  Zeilenvorschub/neue Zeile werden mit CR und LF übertragen

- Meine Versuche:
  Mit Hyperterminal Text aufzeichnen starten -> alle Zeichen
  Empfangen -> Text aufzeichnen beenden  können die empfangenen
  Werte in eine TXT Datei abgespeichert werden.
  In Excel lässt sich diese TXT Datei "Externe Daten aus Text
  abrufen" mit mehreren Klicks importieren.
  Das funktioniert auch alles.

Mein Ziel ist es aber, diesen obigen Versuch direkt aus Excel zu machen 
ohne umständliches Hyperterminal, TXT Datei speichern, mehrere 
Importklicks in Excel.
D.h. einfach: Excel öffnen, "einen Button" betätigen, Daten werden 
eingelesen und importiert.
Als Schmankerl noch: Wenn Excel beim drücken des Button vor dem Empfang 
ein 'U' auf dem COM-Port sendet wäre grandios. Denn darauf reagiert mein 
µC und sendet die Daten daraufhin ohne dass man am µC nicht extra den 
Uebertragen-Taster drücken muss.

Kann mir jemand weiterhelfen?
Oder könnt Ihr mir bitte Quellen nennen wo ich zu Ziel komme?
Gern auch hinreichende Literatur mit Schritt-für-Schritt Erklärung.

Vielen Dank

: Verschoben durch User
von jibi (Gast)


Lesenswert?

Moin,

VBA ist das Stichwort. Damit lässt sich Excel sogar programmieren.

Einmal googlen:

http://dev.emcelettronica.com/serial-port-communication-in-excel-vba

Bitte.

Gruß Jonas

von de1m (Gast)


Lesenswert?

ich habe mal Excel über AutoIT gesteuert, war auch ziemlich leicht. Es 
gibt sogar fertige Implementierungen(UDF in AutoIT) dafür.

von Horst (Gast)


Lesenswert?

Bist du dir sicher, dass die Daten überhaupt in Excel gehören und nicht 
in eine richtige Datenbank? Das hier klingt nämlich wieder mal nach: 
"Ich kenn nur Excel"

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Ernstgemeinte Frage:
Warum will man sowas überhaupt in Excel machen?

von Gorgonzola (Gast)


Lesenswert?

Ich plädiere für Access und DDC. Da braucht man nur eine einfach 
Windowssoftware, die ODBC kann.

Daraus kann man dann leicht Excel-Sheets erzeugen,

von Helen (Gast)


Lesenswert?


von Micro C. (fischgebruell)


Lesenswert?

Hallo und vielen Dank der Antworten. Die Links schaue ich mir genauer 
an.

Ich habe ein Messgerät onstruiert das kontinuierlich misst und die Daten 
im internen Speicher ablegt. Die Daten sollen dann am Laptopausgelesen 
werden so dass diese dann in Excel weiterverarbeiten kann. Excel bietet 
für mich mehr Vorteile da es auf Rechner mehr verbreitet ist. Die Daten 
können leichter ausgetauscht, abgespeichert werden. Ich kenn niemanden, 
außer IT-Experten, die mit Datenbanken arbeiten - eher werden diese nur 
vom Anwender "angewendet".  Mit Excel kennen sich die Leute mehr aus so 
dass auch vom Anwender eigene Sachen/Auswertungen/Anpassungen in Excel 
gemacht werden können. Zudem möchte ich die Messwerte auswerten können, 
grafisch, Höhendiagramme, vergleichen etc...
Ja, und selbst wenn es alles mit Access geht.....ehe ich mich da 
eingearbeitet habe ist viel Zeit vergangen - und Zeit ist momentan mein 
großes Problem. Da muss ich dann leider die Variante "Ich kenn nur 
Excel" ausweichen.

von Benjamin A. (benjamin_a72)


Lesenswert?

Ich werfe hier jetzt mal einen anderen Gedanken ein:

Wieso nicht über Java/.net eine kleine Applikation (grafisch, oder auch 
nur textbasiert) entwickeln, die die Daten über die serielle 
Schnittstelle reinholt und zyklisch in ein .csv speichert. Diese können 
wunderbar in bereits bestehende Excel-Sheets importiert werden, man 
spart sich (eklige) VB-Makros und muss nicht auf hochgestochene 
Datenbanksysteme zurückgreifen.

von Micro C. (fischgebruell)


Lesenswert?

Benjamin A. schrieb:
> Ich werfe hier jetzt mal einen anderen Gedanken ein:
>
> Wieso nicht über Java/.net eine kleine Applikation (grafisch, oder auch
> nur textbasiert) entwickeln, die die Daten über die serielle
> Schnittstelle reinholt und zyklisch in ein .csv speichert. ....

Ja, auch eine schöne Methode......aber ich kann keine Java-Sprache. 
Diese zu erlernen wäre für mich noch zu Zeitaufwendig.
Minimal C kann ich noch....im begrenzen Umfang. Damit würde ich mich 
noch anfreunden wollen....solang ich nicht da auch noch viel Zeit 
investieren muss.

von Benjamin A. (benjamin_a72)


Lesenswert?

>Ja, auch eine schöne Methode......aber ich kann keine Java-Sprache.
>Diese zu erlernen wäre für mich noch zu Zeitaufwendig.
>Minimal C kann ich noch....im begrenzen Umfang.

Es muss nicht immer Java sein ;) .net bietet hier mit dem Visual Studio 
auch die Möglichkeit C#, C++ oder VB zu verwenden. VB also ähnlich zum 
Excel, mit dem Unterschied, dass der Code hier nicht erst zur Laufzeit 
compiliert wird (So denke ich).

Dass man wegen so einer Applikation nicht gleich eine ganze 
Programmiersprache lernt ist mir auch klar, ich muss allerdings 
anmerken, dass es hier im www schon ziemlich viel zu finden gibt. Dazu 
wäre vielleicht noch interessant, in welcher Form die Daten aus diesem 
Messgerät über den COM-Port daher kommen.

Eine Alternative bietet dann sicher auch noch Python, damit habe ich 
persönlich zwar eher wenig Ahnung, aber soweit ich das in Erinnerung 
habe, braucht man bei Python keine Ahnung über Datentypen etc. zu haben 
und es gibt Librarys mit denen man mehr oder weniger alles in kurzer 
Zeit programmieren kann, ohne sich davor stundenlang damit zu 
beschäftigen ;)

von Henn (Gast)


Lesenswert?

Hi! Also der Post ist schon alt, aber da ich leider auch zu der "ich 
kann nur Excel" Partei gehöre, muss ich hier einfach mal antworten, da 
ich selbst derzeit vor einem ähnlichen Problem stehe. Ich sende Daten 
derzeit über R232 an ein Arduino. Hierzu habe ich mir eine .bat Datei 
gebastelt, die über VBA erstellt wird, ausgeführt wird und sich 
anschließend über ein anderes vba modul nach einer bestimmten Zeit (2s) 
wieder löscht. Wenn man nach der sende Routine aus der .bat heraus Daten 
sammeln würde und wieder eine Datei erstellen würde, die sich Excel dann 
wieder über ein VBA Modul ausliest, wäre das vielleicht ne einfache 
Variante für uns "ich kann leider nur Excel Leute :) Frage an erfahrene 
Programmierer: wäre das ein eleganter Weg??
Wenn der Microkontroller z.B. zusätzlich einen kleinen SD Speicher o.ä. 
besitzt, könnte man die Datei mit den Daten direkt dort abholen.

von Zeno (Gast)


Lesenswert?

@TO
Schau mal hier http://www.herber.de . Das ist eigentlich der Excel Guru. 
Da bin ich selbst auch schon oft fündig geworden.

von Peter M. (r2d3)


Lesenswert?

Henn schrieb:
> Variante für uns "ich kann leider nur Excel Leute :) Frage an erfahrene
> Programmierer: wäre das ein eleganter Weg??

Nein.
Die optimale Lösung habe ich noch nicht umgesetzt.

Elegant ist, aus Excel heraus Fragen an die Schnittstelle zu senden und 
die Antworten wieder einzusammeln.

Dazu nutzt man dieselben Betriebssystemroutinen, die auch Hyperterminal 
verwendet.

Die meisten Lösungen basieren auf der Integration von VBA-Code, der 
einfach die Betriebssystemroutinen für VBA deklariert, so dass sie in 
VBA verwendet werden.

Typischerweise muss nach Abfrage einer seriellen Schnittstelle eine 
gewisse Zeit gewartet werden, bevor eine Antwort verfügbar ist.
Die Umsetzung dieses Antwortverhaltens führt leicht zu einer Art "busy 
waiting"-Programmcode in VBA.

Mutmaßlich entfällt dieses Problem bei Verwendung des kommerziellen 
MSComm?-AddIns von Microsoft, das aber auf dem Rechner auch installiert 
bzw. registriert werden muss, bevor es verwendbar ist.

Die oben beschriebenen Wrapper-Lösungen in VBA haben nicht dieses 
Problem.
Des Weiteren gibt es noch eine Reihe von kommerziellen Lösungen dafür.

Mit der Forensuche findest Du zahlreiche Beitragsfäden mit VBA-Code 
dazu.

Schreib' auch hier, wenn Du das Problem gelöst hast!

: Bearbeitet durch User
von embedded controller heger (Gast)


Lesenswert?

Peter M. schrieb:
>> Wenn der Microkontroller z.B. zusätzlich einen kleinen SD Speicher o.ä.
>> besitzt, könnte man die Datei mit den Daten direkt dort abholen.

Wenn, wenn, wenn ich schon einen PC mit im Aufbau habe, lege ich die 
Daten dort mit allem Komfort ab. Und ich quäle nicht den kleinen 
embedded Controller, sondern lasse in die harte Arbeit machen: Ports, 
A/D, PWM, usw.

von Peter M. (r2d3)


Lesenswert?

embedded controller heger schrieb:
> Peter M. schrieb:
>>> Wenn der Microkontroller z.B. zusätzlich einen kleinen SD Speicher o.ä.
>>> besitzt, könnte man die Datei mit den Daten direkt dort abholen.

Bitte richtig lesen und/oder richtig zitieren!

Erstens ist der zitierte Satz nicht von mir, sondern von "Henn":

Henn schrieb:
> Wenn der Microkontroller z.B. zusätzlich einen kleinen SD Speicher o.ä.
> besitzt, könnte man die Datei mit den Daten direkt dort abholen.

Zweitens verstehe ich auch nicht, was mit "direkt dort abholen" gemeint 
sein soll.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.