- ベストアンサー
VBでリアルタイムにグラフを書く方法
- EXCELに入ってくるCSVデータをリアルタイムで折れ線グラフに変換する方法を教えてください。
- 約0.5秒に1回セルA1とB1にデータが入ってくる。それを別々に折れ線グラフに表示し、表示後にセルA1とB1の内容をクリアする方法を教えてください。
- OSはXP、Officeは2000を使用しています。VBでリアルタイムにグラフを描画するプログラムの作成方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
1,2 3,4 5,6, 7,8 9,10 11,12 13,14 15,16 17,18 19,20 こういう<Test.csv>を0.5秒間隔で呼び込んで折れ線グラフにするということですか? Excel は、操作したこともない門外漢ですが、出来そうな気がします。 まず、0.5秒間隔で休止する関数とCSVを読み込む関数を標準モジュールに追加。 Public Sub Pause(ByVal PauseTime As Single) Dim Finish As Single Finish = Timer + PauseTime Do DoEvents Loop Until Timer > Finish End Sub Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String On Error GoTo Err_FileRead Static isOpen As Boolean Static fso As FileSystemObject Static fil As File Static txs As TextStream If Not isOpen Then isOpen = True Set fso = New FileSystemObject Set fil = fso.GetFile(FileName) Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault) End If FileRead = txs.ReadLine Exit_FileRead: If Len(FileRead) = 0 Or isStop Then isOpen = False Set txs = Nothing Set fil = Nothing Set fso = Nothing End If Exit Function Err_FileRead: Resume Exit_FileRead End Function ※Microsft Runtime Scripting を参照するように設定! 次に、グラフを用意しコマンドボタンを配置しCSVを読み込んでみる。 Private Sub CommandButton1_Click() Dim N As Integer Dim Data As String Dim Datas() As String Do Data = FileRead("C:\Temp\Test.csv") Datas() = Split(Data, ",") N = UBound(Datas()) If N = 1 Then Me.Cells(1, 1) = Datas(0) Me.Cells(1, 2) = Datas(1) End If ' Worksheets("Sheet1").ChartObjects(1).Chart.Refresh Pause 0.5 Loop Until Data = "" End Sub Chart.Refresh は、あってもなくてもグラフは変化するようです。 もちろん、エクセルのグラフはエクセルデータを反映するもんだから、セルの更新を先にしている。 こんなんでどうでしょうか? 生まれて初めて挑んだんで最適解かどうかはかなり怪しいですが・・・。
その他の回答 (1)
もしかしてセルが更新されたらリフレッシュするということかな。 1、更新後グラフが自動更新されないなら ・コードでリフレッシュする。 2、更新イベントが発生しないやり方ならば、 ・コードで定期的にチェックする。 が、考えられます。 が、ならば、もう少し、質問の焦点を絞られたがいいです。
お礼
回答ありがとうございます。 1分でも120個x2のデータが入ってきてしまうので定期的チェック よりは毎回グラフに書き込みしたらリフレッシュでイメージして おりました。(0.5秒ごとにデータは入ってきますので・・・) 自分でもよく内容を把握していなかったので漠然とした質問になって しまいました、すみません。 でも、それだけでもいろいろな考え方があるのですね! 参考にさせていただきます。ありがとうございました!
お礼
回答ありがとうございます。 先頭の方の考え方はまさにイメージ通りです! 訳もわからず質問したこちらが申し訳ない程です。 早速使わせていただきます! 結果は後程報告させていただきますね。 こんなに出来て生まれて初めて・・・なんですか? 私はいろいろなHP見てるだけで3日使っちゃいました。 ありがとうございました!