人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのマクロを起動させておいて、1日に10回ほど決まった時刻に決まった作業をさせるマクロの書き方をお教えください。具体的には楽天証券のRSSで決まった時刻の株価を記録しておきたいのです。

●質問者: karoneko
●カテゴリ:コンピュータ 学習・教育
✍キーワード:エクセル マクロ 株価 楽天証券
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●35ポイント

(1)ループさせ続ける

無限ループのようなコードを書き、時刻を適宜チェックするという荒業。

CPU使いっぱなしになりますし、ループを続ける事によって

フリーズしたりする可能性も結構高いので、一時凌ぎ以外には使えません。


(2)タイマーコントロール系のフリーソフトを使う

どれがどれやら・・・何とも言えません。


(3)Windowsのタスクスケジューラを使う

Excelを動かし続けるのではなくて

WindowsのタスクスケジューラでExcelを定時的に起動させるのがスマート。

マクロ名をAutoExecにしておけばブックを開いた時に動きだします。

VBScriptを使えればExcelを起動することなく(実際には裏で動いているけど)行えるので

よりスマートなシステムにすることも可能だけれど覚える事が増えるので割愛。

@IT:Windows TIPS -- Tips:タスク・スケジューラとWSHで定例処理を実現する

◎質問者からの返答

回答ありがとうございます。いろいろ難しそうですね。高齢者になって・・・頭がなかなか回りません(笑)

エクセルシートにボタンを付けて押すとその時の株値等をコピペできるようにしましたが、

これを8:30 8:50 9:00 9:15 9:30 11:00 に自動で押してくれるととてもウレシイのです。


2 ● SALINGER
●35ポイント

kn1967さんの(1)の方法でやってみました。

Do?Loopで無限ループにすると、私のPC環境はクアッドコアだったので、

4つのコアの内1つが常に最大状態で、25%程度の使用率。

できなくもないが、一般的じゃなくてメモリのこともあるし実用的じゃないですね。

(3)のタスクスケジューラでブックを開くときにマクロが実行されて、終了したら閉じるようにするのが実用的だと思います。


因みに、(1)で作ったコードは以下。

シートにスタートストップボタンを作って、シートモジュールに

Private Sub CommandButton1_Click()
 If fRun Then
 fStop = True
 CommandButton1.Caption = "スタート"
 Else
 CommandButton1.Caption = "ストップ"
 Call TimerTest
 End If
End Sub

標準モジュールに

Option Explicit

Public fStop As Boolean
Public fRun As Boolean

Sub TimerTest()
 Dim i As Integer
 Dim f As Boolean
 Dim strTime As String
 Dim strTime2 As String
 Dim setTime(1 To 6) As String
 
 setTime(1) = "8:30"
 setTime(2) = "8:50"
 setTime(3) = "9:00"
 setTime(4) = "9:15"
 setTime(5) = "9:30"
 setTime(6) = "11:00"
 
 fRun = True
 Do
 DoEvents
 If fStop Then Exit Do
 
 strTime = Hour(Now) & ":" & Minute(Now)
 f = False
 For i = 1 To UBound(setTime)
 If setTime(i) = strTime And setTime(i) <> strTime2 Then
 f = True
 strTime2 = setTime(i)
 Exit For
 End If
 Next
 
 If f Then
  'ここに処理が入ります。
 MsgBox strTime
 
 End If
 Loop
 fRun = False
 fStop = False
End Sub
◎質問者からの返答

ご丁寧な回答を本当に有難うございます。

明日からインターネットのできる温泉に1週間籠もりますので・・・さっそくチャレンジしてみます。


3 ● airplant
●10ポイント

既に解決しているかもしれませんが・・・

一般的に、10回/日であれば、kn1967さんが書かれているWindowsのタスクの機能がいいと思います。

標準モジュールにauto_run()を記載しておき、タスクでそのExcelファイル名を指定しておく。

ボタンを押した処理をauto_run()に書いておく。

(ただし、セキュリティレベルを「低」にしておく必要があります)

autoexecはAccessの方と思いますので、Excelではauto_runですね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ