Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Daten von COM-Port in Arbeitsblatt einlesen

433 views
Skip to first unread message

Harry Knitter

unread,
May 13, 2003, 8:02:38 AM5/13/03
to
Hallo miteinander,

weiss irgendjemand vielleicht, wie (und ob überhaupt) mittels vba Daten von
einem COM-Port in Excel eingelesen werden können?

Bin dankbar für jeden Tipp.

Gruß

Harry


Anton Haumer

unread,
May 13, 2003, 4:31:01 PM5/13/03
to
Harry Knitter schrieb:

Hallo Harry,

http://schwimmer.bei.t-online.de/
Excel/VBA
Nr 29 Serielle Schnittstelle für Schalt- und Messaufgaben

H.J.Berndt/B.Kainka
Messen Steuern und Regeln mit Word & Excel
VBA-makros für die serielle Schnittstelle
Franzis' 2001, ISBN 3-7723-4094-6

Beides selbst noch nicht getestet hoffe es werkelt ;-)

LG - Toni

Anton Haumer

unread,
May 13, 2003, 4:30:30 PM5/13/03
to Harry Knitter
Harry Knitter schrieb:

Hallo Harry,

Michael Schwimmer

unread,
May 14, 2003, 2:02:36 AM5/14/03
to
Hallo Harry,

"Harry Knitter" schrieb:


> weiss irgendjemand vielleicht, wie (und ob überhaupt) mittels vba
> Daten von einem COM-Port in Excel eingelesen werden können?

schau mal auf meine Homepage unter Excel/VBA auf

Datenübertragung mit der Seriellen Schnittstelle

Mit Hilfe der Klasse kann man Daten zwischen Excel und
Hyperterminal, oder zwischen zwei Mappen austauschen.
Wenn du auf ein anderes Gerät zugreifst,solltest du mit
Hyperterminal vorher die Einstellungen herausfinden.
Der Klasse kannst du dann die Einstellungen wie Baudrate,
Parity etc. übergeben.

MfG
Michael

--
-------------------------------------------
Michael Schwimmer
Home : http://schwimmer.bei.t-online.de

Harry Knitter

unread,
May 14, 2003, 3:26:00 PM5/14/03
to

"Michael Schwimmer" <schw...@t-online.de> schrieb im Newsbeitrag
news:b9sm5s$gsk$04$1...@news.t-online.com...

Danke für den Tipp an Anton, und natürlich an Dich Michael.

Mein Problem ist dies:

Ich muss aus einer Telefonanlage Daten auslesen. Mit dem Hyperterminal
funktioniert dies prima. Einstellungen COM1 8N1 9600 baud und das
Hyperterminal empfängt tadellos.

Nun möchte ich gerne die Datensätze (Beispiel wie´s im Hyperterminal
aussieht):

Teilnehmer 17 MSN1/
Ziel 99999/999999
TE 1 Betrag 0,25EUR

in Excel-Zellen einlesen.

Wie sollte ich dabei vorgehen?

Harry


Anton Haumer

unread,
May 14, 2003, 4:50:04 PM5/14/03
to
Harry Knitter schrieb:

Hallo Harry,

als Rohentwurf:
Damit die Telefonanlage so etwas sendet
musst Du erstmal einen Befehl (String) senden, nehme ich an.
Eine vernünftige Bibliothek für die Serielle hat dann einen
Buffer angelegt, aus dem Du die Antwort der Telefonanlage
als herausholst, zerlegst und in Zellen abspeicherst.

LG - Toni

Michael Schwimmer

unread,
May 15, 2003, 1:52:53 AM5/15/03
to
Hallo Harry,

"Harry Knitter" schrieb:


> Mein Problem ist dies:
> Ich muss aus einer Telefonanlage Daten auslesen. Mit dem
> Hyperterminal funktioniert dies prima. Einstellungen COM1 8N1 9600
> baud und das Hyperterminal empfängt tadellos.
> Nun möchte ich gerne die Datensätze (Beispiel wie´s im Hyperterminal
> aussieht):

wenn du über Hyperterminal Daten auslesen kannst, müsste
das auch mit meiner Klasse funktionieren.
Lade dir doch mal die Mappe herunter.
Zum Testen der Klasse kannst du auf dem Blatt Kom die Schnittstelle,
Baudrate, Parität, Datenbits etc. einstellen. Dann machst du noch
die Häkchen bei RTS und DTR und öffnest die Kommunikation.
Wenn das Gerät was sendet, landet es im Eingangspuffer, dessen
Größe du vor dem öffnen der Kommunikation festlegen kannst. Mit
einem Klick auf den Button "Empfangspuffer lesen" wird der Puffer
ausgelesen und in Zelle A21 eingetragen.
Wenn vorher noch etwas gesendet werden muss, in Zelle A17 eintragen
und Senden Button anklicken.
Wenn du etwas empfangen hast, geht es folgendermaßen weiter:
In deinem Fall musst du den empfangenen String zweimal splitten.
Einmal an der Stelle vbCrLf, oder vbCr. Dann hast du erst einmal
ein Array mit den einzelnen Zeilen. Jedes Element dieses Arrays
muss dann nochmal gesplittet werden, ev. an der Stelle vbTab oder
Doppel- Einfachleerzeichen, je nachdem.
Hast du XL97, musst du Split nachbauen. Eine Möglichkeit:

Function SplitVBA(strText As String, Trenner As String)
Dim a As Long, b As Long, c()
Do
b = InStr(1, strText, Trenner)
ReDim Preserve c(1 To a + 1)
If b = 0 Then c(a + 1) = strText: Exit Do
c(a + 1) = Left$(strText, b - 1)
strText = Right$(strText, Len(strText) - b - Len(Trenner) + 1)
a = a + 1
Loop
SplitVBA = c
End Function

Übrigens muss dazu kein Verweis gesetzt werden, oder etwas
heruntergeladen und installiert werden. Es funzt mit Bordmitteln.

Harry Knitter

unread,
May 15, 2003, 5:41:13 PM5/15/03
to

"Michael Schwimmer" <schw...@t-online.de> schrieb im Newsbeitrag
news:b9v9vl$a7u$00$1...@news.t-online.com...


Danke für die Tipps, ich werde es am Wochenende (vorher komme ich leider
nicht dazu) mal ausprobieren. Falls ich noch Fragen haben sollte, werde ich
mich ab jetzt direkt mit Michael in Verbindung setzen.
Vielen Dank nochmals an Euch beide

Harry


0 new messages