dポイントプレゼントキャンペーン実施中!

ある装置のデータをRS232C経由でMSCommを利用し、EXCELに直接取り込みたいのですが、そのデータにはタブ区切りが設定してあるのでEXCELの1つのセルに1区切りのデータごと出力されてほしいのですが、区切られず1つのセルにすべて出力されてしまいます。どうしたらよいのでしょうか宜しくお願いします。

A 回答 (4件)

MSComm1_OnCommをこんな感じで変更してみたら


どうなりますか?

Private Sub MSComm1_OnComm()

Dim dto As New DataObject '(注)
dim R as integer
dim C as integer
dim Buffer as string

R = ActiveCell.Row
c = ActiveCell.Column

Select Case MSComm1.CommEvent
Case comEvReceive
Buffer = MSComm1.Input
'Cells(R, c) = Cells(R, c) & Buffer

dto.SetText Buffer
dto.PutInClipboard

ActiveSheet.Paste

  Cells(R + 1, c).Select

End Select
End Sub
    • good
    • 0
この回答へのお礼

できました!!どうもありがとうございます。

お礼日時:2006/06/12 15:49

NO.1です



EXCELではクリップボードオブジェクトはなかったような?

で、
Sub aaa()
Dim dto As New DataObject '(注)
Dim a As String

a = "AAA" & vbTab & "BBB" & vbTab & "123"

dto.SetText a$
dto.PutInClipboard

ActiveSheet.Paste

End Sub
を参考にしてください。
(注) Microsoft Forms 2.0 Object Libraryを参照設定します。
    • good
    • 0

Windowsでは復帰+改行のコードがあれば、各行にデータがセットされると思います。

そうすれば、データー区切り位置・・・で、カンマの位置で、分離されて、各セルに分けることが簡単にできます。
区切りらしいもののコードはどうなってますか。
MSCommを利用するなどのところまでやるつもりであれば、そんなことは判っているかもしれないが。
学生さんかと思うが、先輩など、回りにそれを知っている人いませんか。

この回答への補足

返答ありがとうございます。実はVBの知識などほとんどない一般社会人です。ネットで調べながらみようみまねでやっていますが改行するコードをどのように書けばよいかわかりません。現在下記のようになっており(1)のコマンドボタンをクリックするとデータを抽出するようになっています。助言お願いいたします。

Private Sub MSComm1_OnComm()

R = ActiveCell.Row
c = ActiveCell.Column

Select Case MSComm1.CommEvent
Case comEvReceive
Buffer = MSComm1.Input
Cells(R, c) = Cells(R, c) & Buffer
  Cells(R + 1, c).Select
End Select
End Sub


Private Sub 開く_Click() ・・・・・(1)
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 18
MSComm1.SThreshold = 1
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
Else
End If
Cells(1, 1).Select
End Sub

補足日時:2006/06/12 11:59
    • good
    • 0

取得したデータを直接セルに書き込まずに、


一度クリップボードに入れてから貼り付ければ
OKです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!