こんにちは。
もう一度、私の以前の開発上のログを読んでみました。
Microsoft 側のサポートは、古すぎてダメだったのですが、こちらでは、DDEインポートでExcelのイベントを発生して成功しています。しかし、こちらは、質問者さんと同じ環境で開発していないので、元の段階で違っているか、何か別の原因があるとは思います。
たぶん、私は、この問題は必ず開発は可能だと思いますが、同じ環境を持たないと、掲示板上でのやり取りでは難しいかもしれません。
こんにちは。
>1分ごとに履歴が記録されていますが、
>これを、30分や、60分などを指定すれば、その単位で、履歴を記録させるという意でした。
簡単に行うなら、フラグを、OnTimeメソッドで送ってあげて、それを、イベントの中に、フラグで判定させればよいです。イベント自体は生きていますが、Sheet2 にはデータが送られません。
再度、記録するためには、もう一度、「セット・タイマー」のマクロを実行します。mMIN は、分を入れます。1分ごとの流入でしたら、まず、間違いはないと思います。頻繁(例:1/sec)にデータが入るようでしたら、イベント側に、割り込みのDoEvents を適当な場所に入れてあげる必要があります。
------------------------------------
**標準モジュール
------------------------------------
Public TimeCutFlg As Boolean
Sub SetTimer()
'セット・タイマー
Dim myTime As Date
Const mMIN As Integer = 60 '設定の時間(分)
TimeCutFlg = False
myTime = Now + TimeSerial(0, mMIN, 0)
Application.OnTime myTime, "SendFlg"
End Sub
Sub Sendflg()
'フラグを送る
TimeCutFlg = True
End Sub
------------------------------------
**シートモジュール
------------------------------------
Private Sub Worksheet_Calculate()
'カルキュレイト・イベント
Static flg As Boolean
If TimeCutFlg Then 'フラグで解除
If flg = False Then
MsgBox "記録終了"
flg = True
End If
Exit Sub
End If
With Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0)
.Resize(, 5).Value = Worksheets("Sheet1").Range("A2").Resize(, 5).Value
End With
flg = False
End Sub
お礼
リクエストを頂いて有難う御座いました。 解決はされていないのですが、そろそろ一旦質問を締め切ります。 同様のことをされているのではないかとおもいますので、ぜひ、 OKWaveで色々とやり取りをさせていただければと思っております。 現在、為替のバックテストツールを作成しています。 自分なりの仮説があるのですが、これまで関数でテストを行っていました。あまりに重くなってしまいましたので、VBAで試みている次第です。 宜しく御願いいたします。