• 締切済み

エクセルVBA 測定器からデータ取得

みなさん教えてください。 現在、エクセルVBAでRS232を用いて、測定器(DMM)から測定結果を取得するソフトを組んでいます。 測定器からデータは取得できるようになったのですが、測定器から出力されるデータが 「5.123,0.0111」とカンマ区切り状態ではないので、容易にグラフ化などデータ整理ができません。  ↑     ↑ 電圧値  電流値 そこでみなさんに教えて頂きたいことがあります。 データ取得時に、自動的にカンマ区切り状態になり、 セルA2:測定時間 セルB2:電圧値 セルC2:電流値 のようにデータが自動的に入ってくるようにしたいと思っています。 このようにデータを取得するためには、下記構文をどう変更すればよいか、教えて頂けませんか。 御願いします。 <構文>フリーソフトのEasyCommを使用しています。 Sub 測定開始() Dim get_data As String '文字列型(2byte変数) Dim ComPort As Byte 'バイト型(1byte変数) Dim s As Long '長整数型(4byte変数) Dim ss As Long '長整数型(4byte変数) ComPort = Cells(1, 6).Value 'COMポート番号の取得 ec.COMn = ComPort 'COMポート番号の指定 ec.HandShaking = "N" 'ハンドシェークなし ec.Delimiter = "CRLF" 'デリミタ(CR:復帰,LF:改行) ec.Setting = "9600,n,8,1" '通信条件の設定 ec.AsciiLineTimeOut = 1500 'AsciiLineの読み出しアウト時間 '受信データの記録 Do While Range("G2") = 1 i = i + 1 get_data = ec.AsciiLine '文字列の読み出し Cells(1 + i, 1).Value = Format(Now, "h:mm:ss") '時間の記録 Cells(1 + i, 2).Value = get_data 'データの記録 ec.WAITmS = 2 '待機時間(20ms) '通信ポートのクローズ ec.COMnClose = ComPort End Sub

みんなの回答

  • minis8566
  • ベストアンサー率50% (29/58)
回答No.1

”5.123,0.0111” を "5.123"と"0.0111"に分けてハンドリングできればいいのでしょうか。 Subプロシージャの上のほうの宣言を変えて、配列を作ります。 Dim get_data As Variant  データ読み出し時にデータ内にあるカンマで情報を分けます。このとき最初のカンマまでの値がGet_data(0)に入ります。他のは(1)以降カンマ区切りごとに順番に入ります。 get_data = Split(ec.AsciiLine, ",") '文字列の読み出し Cells(1 + i, 1).Value = Format(Now, "h:mm:ss") '時間の記録 Cells(1 + i, 2).Value = get_data(0) '電圧 Cells(1 + i, 3).Value = get_data(1) '電流 こんなかんじでいいのでしょうか?

関連するQ&A