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
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
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
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
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
"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.
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