• ベストアンサー

エクセルのVBAについて

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

gtoku
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

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を参照設定します。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

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

gtoku
質問者

補足

返答ありがとうございます。実は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

すると、全ての回答が全文表示されます。
回答No.1

取得したデータを直接セルに書き込まずに、 一度クリップボードに入れてから貼り付ければ OKです。

すると、全ての回答が全文表示されます。

関連するQ&A