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 |