Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten von COM-Port lesen

Forumthread: Daten von COM-Port lesen

Daten von COM-Port lesen
02.11.2017 16:29:56
COM-Port
Liebe Gemeinde,
Nach Tagen der Suche via Internet und des ergebnislosen Herumprobierens mit diversen nicht passenden Beispielen, will ich das Thema hier doch mal anfragen...
Ich möchte gern von einem Messgerät über COM-Port einen ANSI-String empfangen und in eine Zelle im XL-Sheet ablegen.
COM-Port, Baudrate, Stop-/Datenbits, Parität etc sind unveränderlich (9;19200;1;8;N).
Per Hyperterminal funktioniert die Datenübertragung (Auch mit zwei Beispiel-XL, die ich aber nicht eingedampft und angepasst auf meine Wünsche hinbekomme).
Gesucht wird eine Lösung mit Bordmitteln (W7/XL2010), was z.B. RSAPI.DLL ausschliesst und wahrscheinlich auf API hinausläuft. Ich bin aber offen für alles.
Ich bräuchte also m.E. Code zum Initialisieren der Schnittstelle mit den o.g. Werten, Code zum Abgreifen des ANSI-Strings von der Schnittstelle (z.B. auf Knopfdruck aus einem Puffer) und Code zum Schliessen der Schnittstelle.
Fehlerbehandlung für Fehlbedienung, fehlerhafte Eingaben, nicht geöffnete Ports etc. ist nicht nötig.
Bin für alle Hinweise dankbar, weil ich jetzt doch schon einige Zeit verdaddelt habe und kein Ende sehe. Das bisher gefundene hat alle diese Fehlerbehandlungen und bietet Einstellungen, die für mich nicht nötig sind, das Durchsteigen durch den Code (und das Anpassen) aber zu schwierig machen.
Grüsse
Frank
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten von COM-Port lesen
02.11.2017 17:17:56
COM-Port
Hallo Frank.
ich habe hier ein EBook
Messen, Steuern und Regeln mit Word und Excel: VBA-Makros
für die serielle Schnittstelle 1 Hans-Joachim Berndt; Burkhard Kainka. -
2., neubeaib. und erw Auf! - Poing : Franzis. 1999
ISBN 3-7723-4093-8
Du siehst, es hat schon ein paar Jährchen auf dem Buckel - es beruft sich aber auf die von Dir ausgeschlossene RSAPI.DLL - Schnittstelle.
Das könnte ich Dir schicken, die dll-Datei ist hiuer zu downloaden:
http://www.b-kainka.de/msrwefaq.htm
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Daten von COM-Port lesen
02.11.2017 17:48:35
COM-Port
Hallo Luschi,
vielen Dank für Deine Antwort.
Die RSAPI.DLL wurde von H.-J.Berndt für den privaten Einsatz und den Einsatz in Schulen freigegeben. So der erste Satz auf der von Dir verlinkten Seite.
Am Ende wird da natürlich keiner nachfragen, aber ich hätte schon ein schlechtes Gefühl. Da könnte ich auch gleich den bekannten Trick anwenden und die mscom.dll lizensieren.
Die Firmenregelungen verbieten ausserdem, zusätzliche Software auf den Rechnern in Eigeninitiative zu installieren.
Der eigentliche Hinderungsgrund ist aber, dass die XL-Datei am Ende einfach auf weiteren Rechnern benutzt werden können soll. Hier geht es darum, verschiedene Maschinen zu kalibrieren. Die Instrumente und Laptops (mit XL drauf) sind vor Ort. Da muss ich dann nur nen USB-Stick einstecken, oder die XL vorab per Mail verschicken und habe alles was ich brauche.
Grüsse
Frank
Anzeige
AW: Daten von COM-Port lesen
02.11.2017 19:25:41
COM-Port
Hallo Luschi,
genau das habe ich auch gefunden und ausprobiert. Funktioniert super.
Ist aber die Kanone, mit der auf meinen Spatz geschossen wird: Viel zu umfangreich und ich steige nicht durch, was ich davon brauche und was nicht (Z.B. die gesamte Sendefunktionalität brauche ich nicht).
Ich habe versucht, Code, der der UF zugeordnet ist, herauszulösen und separat zu verwenden, aber das läuft immer wieder in Fehler in dem Klassenmodul oder es passiert gar nix, wegen der umfangreichen Fehlerbehandlungen.
Die Datei so zu benutzen, wie sie ist, funzt auch nicht, weil hier (anders, als in der Datei, die Michael Schwimmer für vorherige XL-Versionen zur Verfügung gestellt hat) die Rückgabe in ein Feld der Userform erfolgt und nicht in eine Zelle.
Auch der ganze Ablauf ist mir damit zu unhandlich: Auf das Blatt wechseln - UF durch Click auf den Button aufrufen - Einstellungen machen (sind bei mir immer gleich und viel weniger nötig) - COM-Port initialisieren
Ausserdem ist das Aktivieren des Button "Empfangen" aus meinem Sheet heraus umständlich und das Holen des Textfeldinhaltes - das sollte doch gleich in eine Zelle meiner Wahl geschrieben werden.
Naja, was man sich halt so vorstellt...
Grüsse
Frank
Anzeige
AW: Daten von COM-Port lesen
02.11.2017 20:11:33
COM-Port
Hallo Frank,

'Du kannst doch dieses schreiben in die Textbox in eine Tabellenzelle _
umbiegen
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Serielle Schnittstelle").Range("A10")
If strBuffer  "" Then
'statt:
'txtRet.Text = txtRet.Text & strBuffer & vbCrLf
'so:
rg.Value = rg.Value & strBuffer & vbCrLf
Set rg = Nothing
End If
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Daten von COM-Port lesen
02.11.2017 22:35:04
COM-Port
Hallo Luschi,
Ja, dass und wie das geht weiss ich schon.
Ich möchte nur nicht das ganze UF verwenden. Auch die Verwendung als solches ist nicht gerade effektiv.
Ich bräuchte halt das Ganze auf das absolut Notwendige reduziert. Und zwar so, dass ich mir auf meinem Sheet Buttons plazieren kann, die dann das Initialisieren mit den von mir benötigten Werten vornehmen, den Puffer auslesen und den COM-Port wieder schliessen.
Das steckt alles in der Datei von Michael Schwimmer drin, ja, aber eben auch viel mehr und zudem noch umständlich zu bedienen.
Meine Frage demzufolge: Was ist unbedingt notwendig für das von mir benötigte.
Die Datei von Michael Schwimmer habe ich schon ausprobiert, werde wahrscheinlich, wenn keine anderen Vorschläge kommen, das Klassenmodul nutzen, allerdings nicht das UF. Das ist zu umständlich für meine Anwendung.
Ich erhoffe mir Tipps, wie man das, was das Klassenmodul o.g. Datei erledigt, mit weniger Programmcode (und dadurch weniger Funktionalität) auch schaffen kann.
Ich muss nicht den Status der Verbindung abfragen, dutzende Möglichkeiten zur Einstellung der Flusskontrolle haben, ich brauche auch keine Daten zu senden. All das ist nur unnötiger Ballast.
Etwas fertiges wird es vielleicht dafür nicht geben, soll es auch nicht. Snippets und die richtigen Hinweise, was gebraucht wird - das erhoffe ich mir.
Danke trotzdem für Deine Bemühungen, vor allem so spät am Abend noch.
Grüsse,
Frank
Anzeige
;
Anzeige

Infobox / Tutorial

Daten von COM-Port in Excel auslesen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul erstellen: Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Kopiere und füge den folgenden VBA-Code in das Modul ein, um die COM-Schnittstelle zu initialisieren und Daten zu lesen:

    Dim serialPort As Object
    
    Sub InitCOMPort()
        Set serialPort = CreateObject("MSComm.MSComm")
        With serialPort
            .CommPort = 1 ' Setze den COM-Port (z.B. COM1)
            .Settings = "19200,N,8,1" ' Baudrate, Parität, Daten- und Stoppbits
            .InputLen = 0 ' Alle verfügbaren Daten lesen
            .PortOpen = True ' COM-Port öffnen
        End With
    End Sub
    
    Sub ReadData()
        Dim data As String
        If serialPort.PortOpen Then
            data = serialPort.Input ' Daten vom COM-Port lesen
            ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value = data ' In Zelle A1 schreiben
        End If
    End Sub
    
    Sub CloseCOMPort()
        If serialPort.PortOpen Then
            serialPort.PortOpen = False ' COM-Port schließen
        End If
    End Sub
  4. Makros ausführen: Führe die Makros InitCOMPort, ReadData und CloseCOMPort in der Reihenfolge aus, um den COM-Port auszulesen und die Daten in Excel zu speichern.


Häufige Fehler und Lösungen

  • Fehler: "COM-Port nicht gefunden"
    Überprüfe, ob der angegebene COM-Port korrekt ist. Du kannst dies in der Systemsteuerung unter "Geräte-Manager" nachsehen.

  • Fehler: "Daten können nicht gelesen werden"
    Stelle sicher, dass das Messgerät korrekt mit dem COM-Port verbunden ist und dass die Baudrate sowie andere Einstellungen übereinstimmen.


Alternative Methoden

Du kannst auch andere Bibliotheken oder Tools verwenden, wie z.B. rsapi.dll, um die COM-Schnittstelle auszulesen. Beachte dabei jedoch, dass zusätzliche Software möglicherweise nicht erlaubt ist, wenn Du die Excel-Datei auf verschiedenen Rechnern verwenden möchtest.

Eine weitere Möglichkeit ist die Verwendung von spezialisierten Tools, die serielle Schnittstellen auslesen können und die Daten in eine CSV-Datei exportieren, die dann in Excel importiert werden kann.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du Daten von einem Messgerät, das über die COM-Schnittstelle kommuniziert, in Excel auslesen kannst:

  1. Stelle sicher, dass das Messgerät über COM1 verbunden ist und die Parameter korrekt eingestellt sind.
  2. Führe das Makro InitCOMPort aus, um die Verbindung herzustellen.
  3. Klicke auf einen Button in Excel, der das ReadData-Makro ausführt, um die Daten in Zelle A1 zu speichern.

Tipps für Profis

  • Verwende Error Handling in deinem VBA-Code, um potenzielle Fehler zu erkennen und zu behandeln. So kannst Du sicherstellen, dass Dein Makro auch dann noch funktioniert, wenn unerwartete Probleme auftreten.

  • Wenn Du oft mit verschiedenen COM-Ports arbeitest, erwäge, eine Benutzeroberfläche zu erstellen, die es Dir ermöglicht, den gewünschten COM-Port und die Parameter auszuwählen, bevor Du die Verbindung herstellst.

  • Halte Deinen Code so einfach und übersichtlich wie möglich. Reduziere unnötige Funktionen, um die Wartung und Anpassung zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich den COM-Port ändern?
Ändere einfach den Wert in serialPort.CommPort im VBA-Code auf die gewünschte Portnummer.

2. Welche Excel-Version benötige ich?
Der bereitgestellte Code wurde für Excel 2010 und höher getestet. Stelle sicher, dass Du die richtige Version verwendest.

3. Muss ich zusätzliche Software installieren?
Nein, der obige Code nutzt nur die in Excel integrierten Funktionen. Du benötigst keine externe Software wie rsapi.dll.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige