- ベストアンサー
13箇所の株価をエクセルにRSSで取り込みそれを5分間隔で自動でコピーしていく。
A1~M1まで13箇所、楽天のRSSで、エクセルに株価を引き込みます。 これを、下の行に移り変わる株価を5分ごとにコピーしていきます。 このVBAの組み方を、教えていただきたいのですが、ご親切なかた、よろしくおねがい致します。 いままで長い事、関連のところを、学習してきましたが、まだ成功していません。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>上記のマクロのみでやっているのですが、うまくいきません。 うまくいかないとは? その状況をちゃんと説明してください。 実行したらエラーが出るのか エラーは出ないけど思った通りの結果が出ず、『どう』なるのか。 その時のExcelの作業環境はどうなっているのか。 貴方のBookが回答サイドの手元にあるわけではないのですから 状態を把握できるように説明しないと解決につながりません。 まずは Const interval = "0:00:05" 5秒おきに実行するように設定して『実験』してみてください。 該当Bookを開き、 そのコードを標準モジュールに置いて、Sheets("sheet1") を実際のシート名に変更したら Macro1 で開始。 5秒おきに Macro1 を繰り返し実行します。 RSS関数を設定したSheets("xxx")のA1:M1のデータを 最終行から順次、下に値のみ蓄積していきます。 終了するには Auto_Close を実行します。 Auto_CloseはそのBookを閉じる時に実行されますから、当然の事ながら Bookを開いたままでないと機能しません。 さて。一体どこで躓いておられるのでしょうか?
その他の回答 (5)
- end-u
- ベストアンサー率79% (496/625)
>もうひとつ教えてください、N行にタイムを入れていくのはどのようにしたら良いのですか? と書いておきながら〆切るのは勘弁してください。 N列の[セルの書式設定]-[表示形式]を 「 時刻 」「 h:mm:ss 」にしてください。 コードを以下に差し替えです。 '標準モジュール Option Explicit Dim setTime As Date Const interval = "0:05:00" Sub Macro1() '開始 Dim r As Range 'セル範囲格納用変数 With Sheets("sheet1") '対象シート名 Set r = .Range("A1:M1") 'A列最大行から上に跳んで最下行へ。その1コ下のセルにA1:M1の値をセット。 With .Cells(.Rows.Count, 1).End(xlUp).Offset(1) .Resize(, 13).Value = r.Value 'A列から右へ13移動したセルに時刻セット .Offset(, 13).Value2 = Now End With End With Set r = Nothing setTime = Now + TimeValue(interval) 'OnTimeメソッドで次回実行予約 Application.OnTime setTime, "Macro1" End Sub Sub Auto_Close() '解除 '予約キャンセル On Error Resume Next Application.OnTime setTime, "Macro1", , False End Sub
お礼
手違いで〆切ってしまいまして、申し訳ありませんでした。 早速の回答、有難うございました。 すべて、思いどうりに動きまして、感謝感激いたしております。 人の、優しさ、情けにふれて、ほんとうにありがたいです。 どうぞ、いつまでもお元気で、有難うございました、、、。
- end-u
- ベストアンサー率79% (496/625)
失礼。 #また忘れた Sub Auto_Close() '解除 '予約キャンセル On Error Resume Next Application.OnTime setTime, "Macro1", , False End Sub
補足
'標準モジュール Option Explicit Dim setTime As Date Const interval = "0:05:00" Sub Macro1() '開始 With Sheets("sheet1") '対象シート名 'A列最大行から上に跳んで最下行へ。その1コ下のセルにA1:M1の値をセット。 .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13).Value = .Range("A1:M1").Value End With setTime = Now + TimeValue(interval) 'OnTimeメソッドで次回実行予約 Application.OnTime setTime, "Macro1" End Sub Sub Auto_Close() '解除 '予約キャンセル On Error Resume Next Application.OnTime setTime, "Macro1", , False End Sub 上記のマクロのみでやっているのですが、うまくいきません。 もうすこし、アドバイス頂けないでしょうか、、、。 今の自分の状態は、13ケの株価を(A1~M1)のセルに楽天RSSで引き込み、次の段階にいくことができません。 自動に9時、9時5分、9時10分とコピーしたいのです。
- end-u
- ベストアンサー率79% (496/625)
'標準モジュール Option Explicit Dim setTime As Date Const interval = "0:00:05" '5分間隔なら"0:05:00" Sub Macro1() '開始 With Sheets("sheet1") '対象シート名 'A列最大行から上に跳んで最下行へ。その1コ下のセルにA1:M1の値をセット。 .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 13).Value = .Range("A1:M1").Value End With setTime = Now + TimeValue(interval) 'OnTimeメソッドで次回実行予約 Application.OnTime setTime, "Macro1" End Sub Sub Auto_Close() '解除 '予約キャンセル Application.OnTime setTime, "Macro1", , False End Sub こんな感じ。 わからない語句などはマウスキャレットをあてて[F1]キー。 ヘルプにクイックアクセスできますから後はご自分で調べて勉強してみてください。
- imogasi
- ベストアンサー率27% (4737/17069)
既製のソフトがあると思うので、購入されたら。こういう他ソフトとエクセル(?)の連携のプログラムは情報も少なく、自動で、5分おきなどの条件もあってやりたいそのままの条件ですから。
お礼
今は、自動でコピーしていくのが分らないため、手動ボタンで5分のタイマーでコピーしております。 これだと、数秒ずれますが、なんとか目的は、はたしてます。 ですが、もう1歩進みたいのです。 少しずつですが、自動でできるよう、がんばります。 9820 793 1890 9:05:06 AM 9825 793 1895 9:10:10 AM 9840 796 1880 9:15:12 AM 9830 799 1840 9:20:13 AM 9835 798 1855 9:25:16 AM 9845 803 1815 9:30:18 AM 9850 806 1790 9:35:15 AM 9850 812 1730 9:42:34 AM 9845 810 1745 9:45:21 AM 9850 809 1760 9:50:28 AM 9855 809 1765 9:55:27 AM 9845 807 1775 10:01:19 AM 9835 806 1775 10:05:32 AM 9830 803 1800 10:10:33 AM 9845 804 1805 10:15:34 AM 9835 802 1815 10:20:35 AM 9845 802 1825 10:25:35 AM 9845 803 1815 10:30:40 AM 9840 805 1795 10:35:42 AM 9855 811 1745 10:40:44 AM 9845 807 1775 10:45:44 AM 9855 806 1790 10:55:49 AM 9845 809 1755 11:00:48 AM 9845 809 1755 11:28:21 AM
- DOUGLAS_
- ベストアンサー率74% (397/534)
>いままで長い事、関連のところを、学習してきました こちらはご覧になったでしょうか? ●楽天RSSの使い方 - タイマーを使う http://kabu.muimi.com/k/rakuten_rss/3/index.html#timer #なお、私は「楽天証券の口座」を開設しておりません。 #検証ができませんので、「単なる情報提供」ということで。。。 #ご存じでしたら、スル~なさってください。 <(_ _)>
お礼
ご親切にありがとうございました。 これからも、さらに学習していきます。 また分らない事があったとき、アドバイスしてください。 どうぞ、おげんきで、、、。
補足
さっそくのアドバイスありがとうございます。 ひと通り読ませていただきましたが、残念ですが解決のきっかけがわかりませんでした。 もっと簡単にするための内容にします。 セルA,1に楽天、マーケットスピードのRSSで株価を取り込みます、リアルタイムにこれが変動するわけですが、 始まりから場が終わるまで、5分間隔で自動でコピーしていく。 (A,1は株価)(A,2はタイム)でその下の行にずーと続くわけです。 上記の事が出来る、マクロを組みたいのです、どうぞよろしくご指導下さい、お願い致します。
お礼
ご親切な回答、感謝致します。 ただ今、エクセルで初めて自動で動いています。 もうひとつ教えてください、N行にタイムを入れていくのはどのようにしたら良いのですか? 遠回りしていたので、ずいぶんと時間がかかりました。 そのぶん、嬉しさもひとしおで、感動しています。 ほんとうに、ほんとうに、有難うございました。 どうぞ、お元気で、、、。