EXCELのグラフをリアルタイムに描く方法を教えてください。

例)セル'A1'の数値は1秒毎に更新される。これを線グラフで時系列で描く。

このようなことができるのでしょうか?そのようなアドオンがあるのでしょうか?

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/30 23:22:55
  • 終了:2007/06/06 23:25:05

回答(2件)

id:takashi_m17 No.1

たか回答回数104ベストアンサー獲得回数122007/05/31 09:48:34

ポイント60pt

1秒毎に更新されるA1セルを別セルに移す方法はどうでしょうか?

・A1セルに値が入る

・C1セルにA1セルの値を移す

・B1セルに時間データ

・1秒後A1セル更新

・C2セルにA1セルの値を移す

・B2セルに時間データ

これを繰り返し処理させる。

そしてグラフは先にB1:C1000までの折れ線を作っておく。


        Cells(x, 2) = Time()           'B列に時間データの入力
        Cells(x, 3) = Cells(1, 1)      'A1セルをC列に移す

1秒毎にA1セルが更新される・・という処理がどういう風になっているのかわかりませんが、マクロであれば上のコードを追加してもらえれば可能かと。

http://q.hatena.ne.jp/

id:mai_mai_mail

takashi_m17さん、

返答ありがとうございます。勉強になります。

教えてもらった方法でためしてみました。結果はすこし、やりたいことに近づいたようです。もうすこし、教えてください。

セルの値を移すことはできました。教えてもらったように1秒後に移すようにコーディングしました。

If Application.Wait(Now + TimeValue("0:00:01")) Then

Cells(x, 3) = Cells(1, 1)

End If

これもうまくいきました。今回、写し元のデータ(例ではA1セル)はDDEによってデータを更新しています。上記のApplication.Waitを実施するとDDEの更新がとまってしまいます。結果、1秒後のデータも同じ物となってしまいます。DDEのデータ更新はランダムに発生します。

どのようにしたらDDEのデータ更新に影響を与えず、マクロを実行することができるでしょうか?

教えてください。

追伸:Sleepを使ってもLockしているようでした。

2007/05/31 21:42:40
id:mj99 No.2

mj99回答回数138ベストアンサー獲得回数382007/06/04 03:50:49

ポイント10pt

>上記のApplication.Waitを実施するとDDEの更新がとまってしまいます。結果、1秒後のデータも同じ物となってしまいます。DDEのデータ更新はランダムに発生します。

>どのようにしたらDDEのデータ更新に影響を与えず、マクロを実行することができるでしょうか?

>教えてください。


XL2000: マクロを繰り返し固定時間間隔で呼び出す方法

Application.OnTimeを使ってみてはどうでしょうか。

標準モジュールを追加して、下記のコードを記述してください

Option Explicit
    
Private nCurrentRow As Integer
Private fContinue As Boolean

Public Sub StartTimerProc()
    nCurrentRow = 2 ' 記録開始位置
    fContinue = True
    Call TimerProc
End Sub

Public Sub StopTimerProc()
    fContinue = False
End Sub

Private Sub TimerProc()
    Dim nextTime As Date
    
    With Sheets(1)
        Cells(nCurrentRow, 2) = Now()
        Cells(nCurrentRow, 3) = Cells(1, 1)
    End With
    
    If fContinue Then
        nCurrentRow = nCurrentRow + 1
        nextTime = Now() + TimeValue("00:00:01")
        Application.OnTime nextTime, "TimerProc"
    End If
    
 End Sub


----

記録を開始するときは、マクロの実行で「StartTimerProc」

記録を停止するときは、マクロの実行で「StopTimerProc」

  • id:takashi_m17
    送り側のDDEのコードをいじれるのであればそちらでセルをずらしていけばどうでしょうか。

    Excelへデータを移す際xの値をずらしていく。
    DDEPoke MyChan, "R" & x & "C1", data


    AccessからExcelへDDEさせてみましたが、DDE更新中にExcelマクロを実行するとやはりExcelマクロ優先でDDEが止まってしまいました。マクロ終了後DDE再開・・・。
    waitもsleepもダメですね。forで延々繰り返してもダメでした。

    ※DDE更新中にマクロを動かす方法が解らないのでコメントで・・・

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません