プロが教える店舗&オフィスのセキュリティ対策術

A1~M1まで13箇所、楽天のRSSで、エクセルに株価を引き込みます。
これを、下の行に移り変わる株価を5分ごとにコピーしていきます。
このVBAの組み方を、教えていただきたいのですが、ご親切なかた、よろしくおねがい致します。
いままで長い事、関連のところを、学習してきましたが、まだ成功していません。

A 回答 (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を開いたままでないと機能しません。

さて。一体どこで躓いておられるのでしょうか?
    • good
    • 0
この回答へのお礼

ご親切な回答、感謝致します。
ただ今、エクセルで初めて自動で動いています。
もうひとつ教えてください、N行にタイムを入れていくのはどのようにしたら良いのですか?
遠回りしていたので、ずいぶんと時間がかかりました。
そのぶん、嬉しさもひとしおで、感動しています。
ほんとうに、ほんとうに、有難うございました。
どうぞ、お元気で、、、。

お礼日時:2009/06/12 00:53

>もうひとつ教えてください、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
    • good
    • 0
この回答へのお礼

手違いで〆切ってしまいまして、申し訳ありませんでした。
早速の回答、有難うございました。
すべて、思いどうりに動きまして、感謝感激いたしております。
人の、優しさ、情けにふれて、ほんとうにありがたいです。
どうぞ、いつまでもお元気で、有難うございました、、、。

お礼日時:2009/06/12 18:50

失礼。


#また忘れた

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分とコピーしたいのです。

補足日時:2009/06/10 00:29
    • good
    • 0

'標準モジュール


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]キー。
ヘルプにクイックアクセスできますから後はご自分で調べて勉強してみてください。
    • good
    • 0

既製のソフトがあると思うので、購入されたら。

こういう他ソフトとエクセル(?)の連携のプログラムは情報も少なく、自動で、5分おきなどの条件もあってやりたいそのままの条件ですから。
    • good
    • 0
この回答へのお礼

今は、自動でコピーしていくのが分らないため、手動ボタンで5分のタイマーでコピーしております。
これだと、数秒ずれますが、なんとか目的は、はたしてます。
ですが、もう1歩進みたいのです。
少しずつですが、自動でできるよう、がんばります。
982079318909:05:06 AM
982579318959:10:10 AM
984079618809:15:12 AM
983079918409:20:13 AM
983579818559:25:16 AM
984580318159:30:18 AM
985080617909:35:15 AM
985081217309:42:34 AM
984581017459:45:21 AM
985080917609:50:28 AM
985580917659:55:27 AM
9845807177510:01:19 AM
9835806177510:05:32 AM
9830803180010:10:33 AM
9845804180510:15:34 AM
9835802181510:20:35 AM
9845802182510:25:35 AM
9845803181510:30:40 AM
9840805179510:35:42 AM
9855811174510:40:44 AM
9845807177510:45:44 AM
9855806179010:55:49 AM
9845809175511:00:48 AM
9845809175511:28:21 AM

お礼日時:2009/06/09 12:33

>いままで長い事、関連のところを、学習してきました



 こちらはご覧になったでしょうか?
●楽天RSSの使い方 - タイマーを使う
http://kabu.muimi.com/k/rakuten_rss/3/index.html …

#なお、私は「楽天証券の口座」を開設しておりません。
#検証ができませんので、「単なる情報提供」ということで。。。
#ご存じでしたら、スル~なさってください。 <(_ _)>

この回答への補足

さっそくのアドバイスありがとうございます。
ひと通り読ませていただきましたが、残念ですが解決のきっかけがわかりませんでした。
もっと簡単にするための内容にします。
セルA,1に楽天、マーケットスピードのRSSで株価を取り込みます、リアルタイムにこれが変動するわけですが、
始まりから場が終わるまで、5分間隔で自動でコピーしていく。
(A,1は株価)(A,2はタイム)でその下の行にずーと続くわけです。
上記の事が出来る、マクロを組みたいのです、どうぞよろしくご指導下さい、お願い致します。

補足日時:2009/06/08 23:16
    • good
    • 0
この回答へのお礼

ご親切にありがとうございました。
これからも、さらに学習していきます。
また分らない事があったとき、アドバイスしてください。
どうぞ、おげんきで、、、。

お礼日時:2009/06/09 12:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!