Sub Macro10()
'
' マクロ名は適当につけてください
' Macro10 Macro
' マクロ記録日 : 2008/4/3  ユーザー名 : nic
' excelからRS232Cを通してデータを集めるプログラム
'
' 「easycomm」を利用させていただいております
' このプログラムは「easycomm」がインストールされている
' 前提で動きます
'  http://www.activecell.jp/ec/index.htm
'
'  「Yoshi, snyc」さんのwait関数を利用させていただいております。
'  http://snyc.s28.xrea.com/
'
'

'
 Dim str As String
 Dim i As Integer
 Dim count As Integer
 Dim waittime As Long
 
    ec.COMn = 1                   ' COM1を使用します
    ec.Setting = "9600,n,8,1"     ' 通信条件を設定します
'    ec.HandShaking = ec.HANDSHAKEs.RTSCTS   ' ハンドシェーク方式を設定します.
    ec.HandShaking = ec.HANDSHAKEs.No   ' ハンドシェーク方式を設定します.
'    ec.Delimiter = ec.DELIMs.CrLf   ' デリミタを設定します(CR+LF)
    ec.Delimiter = ec.DELIMs.CR   ' デリミタを設定します (CR)

  Range("j2") = "" 'セルJ2をクリアー なくても良い
  Range("j3") = "" 'セルJ3をクリアー(作業開始時に終了のendを消す)
   
'  Range("k2").Select
  waittime = Range("k2")   'セルK2のサンプリング間隔を読み込む
  count = Range("L2")      'セルL2のサンプリング回数を読み込む
  
   
   i = 2
   While i <= count + 1
      
'   For i = 2 To 11
     str = CStr(i) ' str = "I"   'strに数値「I」を文字として代入
     
    
    Range("J2").Select                     'セルJ2を選択
    ActiveCell.FormulaR1C1 = "=NOW()"      '今の日付時刻を入れる

    Range("J2").Select                     'セルJ2を選択
    Selection.Copy                         'コピーする
    Range("A" + str).Select                '日付を入れるセルを選択
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False          '値貼り付け
    Application.CutCopyMode = False
    Selection.NumberFormatLocal = "yyyy/m/d"    '表示を2008/4/3形式にする

    Range("J2").Select
    Selection.Copy
    Range("B" + str).Select                     '時刻を入れるセルを選択
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False               '値貼り付け
    Application.CutCopyMode = False
    Selection.NumberFormatLocal = "[$-F400]h:mm:ss AM/PM"  '表示を13:25:15形式にする

'    ec.AsciiLine = "F2,PR2,M1,E"  ' 測定開始
    ec.AsciiLine = "0"  ' 測定開始 CH0
    Range("C" + str) = ec.AsciiLine  ' 測定データの受信と書き込み
    ec.AsciiLine = "1"  ' 測定開始 CH1
    Range("D" + str) = ec.AsciiLine  ' 測定データの受信と書き込み
    ec.AsciiLine = "2"  ' 測定開始 CH2
    Range("E" + str) = ec.AsciiLine  ' 測定データの受信と書き込み
    ec.AsciiLine = "3"  ' 測定開始 CH3
    Range("F" + str) = ec.AsciiLine  ' 測定データの受信と書き込み
    
    Call Wait(waittime) ' wait milisecond

    i = i + 1

   Wend
'   Next
    ec.COMn = -1        ' ポートを閉じます
  
'  Range("J3").Select
  Range("j3") = "end"    '作業が終了したことを表示
  

End Sub


Private Sub Wait(ByVal waittime As Long)
    Dim starttime As Long

    starttime = timeGetTime()

    Do While timeGetTime() - starttime < waittime
        DoEvents
    Loop
End Sub

電子工作のことへ     HomePage     このページのトップ