
エクセルのVBAで、楽天RSSから1分ごとに株価が入るようにするマクロを作りたいのですが、初心者なので手が出ません。
作成したいものは以下のようなものです。
1分ごとに、1001行のA列に時間が入り、1001行のB列からIV列に、1行上の1000行の数値(この数値はあらかじめ入っていて変化します)が入るようにします。
新しい株価が1001行に入るようにして、時間が前の株価は1分ごとに1行ずつ下に下がっていくことになります。
10時に最初の株価が入ったのが例1でして、1分経ちますと例2のように1行繰り下がり、もう1分経ちますと例3のようにまた1行繰り下がります。
どうぞよろしくお願いします。
例1
A B C ・・・・
1000 100 50
1001 10:00:00 100 50
1002
1003
例2
A B C ・・・・
1000 105 45
1001 10:01:00 105 45
1002 10:00:00 100 50
1003
例3
A B C ・・・・
1000 110 40
1001 10:02:00 110 40
1002 10:01:00 105 45
1003 10:00:00 100 50
No.2ベストアンサー
- 回答日時:
こんばんは。
人によっていろいろなリクエストがありますね。人によっては、3秒以内とか、また、リアルタイムで書き換えるとか……。
'標準モジュール
'----------------------------------------
Dim myTime As Date
Dim flg As Boolean
Sub Ontime_Set()
'記録スタート
If flg = False Then
flg = True
myTime = Now + TimeSerial(0, 1, 0) '時間設定
ElseIf flg = True Then
flg = False
Else
Exit Sub
End If
With ActiveSheet
If .Cells(1001, 1).Value = "" Then
.Cells(1001, 1).Value = Format(Now, "hh:mm")
.Range(.Cells(1000, 2), .Cells(1000, 256)).Copy .Range(.Cells(1001, 2), .Cells(1001, 256))
End If
End With
Application.OnTime EarliestTime:=myTime, _
Procedure:="my_Procedure", Schedule:=flg
If flg = False Then
myTime = 0
End If
End Sub
Sub Ontime_Reset()
'タイマー解除
On Error Resume Next
Application.OnTime EarliestTime:=myTime, _
Procedure:="my_Procedure", Schedule:=False
If Err.Number > 0 Then
MsgBox "OnTime設定はされていません。", 64
Err.Clear
flg = False
Else
MsgBox myTime & "の設定は解除されました。", 64
flg = False
myTime = Empty
End If
End Sub
Sub my_Procedure()
'実行マクロ
Application.ScreenUpdating = False
With ActiveSheet
.Rows(1001).Insert Shift:=xlDown
.Cells(1001, 1).Value = Format(Now, "hh:mm")
.Range(.Cells(1000, 2), .Cells(1000, 256)).Copy .Range(.Cells(1001, 2), .Cells(1001, 256))
End With
Application.ScreenUpdating = True
flg = False
myTime = 0
Call Ontime_Set
End Sub
'-----------------------------
どうもありがとうございます。
エクセルで確かめていましてお礼が遅れてしまい、すみませんでした。
長いマクロを書いて頂き感謝しています。
質問しました通りに、うまく動きました。
ただ、問題点が生じてしまいました。
1行から999行の間のセルで作業をしようと考えていまして、関数を入力したのですが、行の数字を絶対参照にしましても、マクロが実行される1分ごとに数字が1つ増えてしまうのです。
1行から999行のセルの数字が変わらないようにする方法はあるのでしょうか。
また別シートを選択しますと、マクロが停止しましてデータの更新が1分おきになされなくなってしまいます。
ですので別シートでの作業も意味が無くなってしまいます。
宜しければ、お時間のある時に解決策を頂けますと嬉しいです。
どうもありがとうございました。
No.3
- 回答日時:
こんばんは。
一応、私の想定範囲のことでしたら、以下のようになります。
>1行から999行の間のセルで作業をしようと考えていまして、関数を入力したのですが、行の数字を絶対参照にしましても、マクロが実行される1分ごとに数字が1つ増えてしまうのです。
1行~999行の中のセルの数式が、1000行以上のデータを参照しているとなると、すぐには思いつきませんので、数式の例を見せてください。一般的な回答として、データが動いても、動かさないようにするには、INDIRECT関数を使います。行が増えても減っても、同じ場所を指しています。
>また別シートを選択しますと、マクロが停止しましてデータの更新が1分おきになされなくなってしまいます。
>ですので別シートでの作業も意味が無くなってしまいます。
それは、DDE(データを送る側の仕組み)からの送信で、シートを決めているはずですから、
そのVBEditor 画面の一番上から、ActiveSheet のところにカーソルを持っていって、編集--置換で、
ActiveSheet '検索
↓
Worksheets("Sheet1") '置換(実際にデータが入るシート)
で、データを、カレントプロジェクト--すべて置換で、そのマクロコード全体を置換してしまってください。(2箇所)そうすれば、シートを替えても、勝手にデータを取っているはずです。

この回答への補足
お礼の欄に補足して書けませんので、こちらに書きます。
解決する事が出来ました。
実際に、マクロで平均値を出してみましたら、求める行数で算出できましたが、行数の変化するシートで作業するのは大変だと感じ、別シートで作業する事にしました。
fujillin様のお考えのおかげです、どうもありがとうございました。
今回は、Wendy02様に助けて頂かなければ、自分ではどうにもなりませんでした。
心より感謝しています。
どうもありがとうございました。
Wendy02様、こんにちは。
お返事、どうもありがとうございます。
数値の更新で新たな問題点に気付きましたので、そちらからご報告いたします。
1000行目の数値が1001行目に入るようになっていますが、1000行目のA列以外のセルの関数式は、楽天RSSの関数式である"=RSS|'1334.T'!現在値"などが入っています。
1001行にコピーされる時に、その関数式がコピーされてセルに入ります。
その関数式のまま1001行以下に入っていきますので、現在値である同じ数値が更新する状態になっています。(同じ列には同じ数値が並んだ状態です)
関数式ではなく、1000行目のセルの数値自身を1001行目のセルに入れる事は出来ますでしょうか。
>数式の例を見せてください。
平均値、最大値、最小値、標準偏差、乖離率などを求める式です。
平均値の数式は、以下のようなものです。
=ROUND(AVERAGE(B1001:B1010),1)
=ROUND(AVERAGE(B1001:B1020),1)
=ROUND(AVERAGE(B1001:B1030),1)
・・・・・
平均値を求めるセルの数は、1列だけで数十個、考えていまして、A列を除く255列すべての列で、数十個の平均値を求めたいと思っています。
最大値の数式は
=MAX(B1001:B1030)でして、1列につき20個ほどを、255列で考えています。
他の数式も同様でして、1001行から先のセルを参照します。
使用したい数式(セル)の数が多いものですから、お教えいただきましたINDIRECT関数を使った方法は困難に感じています。
ある方法が思い浮かんだのですが、可能かどうか分かりません。
ご教授頂けますとありがたいです。
マクロで平均値などを計算するとしましたら、求めたい行数で計算されるのかという事です。
計算式の数が多いので、元々、セルで計算するよりも、マクロで計算した方が良いような気がしますが、マクロの式が分からず、今までセルで算出していました。
別シートを選択するとマクロが停止するのではなく、その選択したシートがActiveSheetとなって、選択したシートでマクロが実行されて、データを更新したいシートが動かなくなるのですね。
置換をしましたら、うまくいきました、ありがとうございます。
大変感謝しております。
どうぞよろしくお願いします。
No.1
- 回答日時:
楽天RSSを使用したこともないし、実験できる環境にもないので…
◇別シートにデータを表示させておいて、それをマクロで1分ごとに転記するのなら、比較的簡単にできます。
かなり近い例が以下にあります。
http://kabu.muimi.com/k/rakuten_rss/2/index.html
表示するシートと記録するシートを別にしておけばほとんど同じではないでしょうか。
◇直接データを取得できるのかどうか不明ですが、以下にヒントになりそうな記述があります。
(楽天RSSのマニュアル等にもっと有効な情報があるかも知れませんが…)
http://plaza.rakuten.co.jp/acknight/diary/200711 …
なお、1分ごと実行するのは、
VBAのOnTime メソッドなどを利用すれば実現できるでしょう。
ご回答をありがとうございます。
私は1行挿入する方法を考えたのですが、うまくいかない点に気づきました。
表示するシートと記録するシートを別にするという方法もあったのですね。
できれば、別シートを使わないで済む方法がありましたらありがたいです。
サイトのご紹介もして頂きまして、参考になりました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) Excel 数式がわかりません、答えが導かれる数式を教えていただけませんか? 2 2023/07/24 22:41
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- 株式市場・株価 任天堂の株式分割がありますが、 バフェット様のタイプBみたいな 1/100の株価の、同一の会社の タ 1 2022/12/14 23:47
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- その他(教育・科学・学問) エクセル関数について 2 2022/12/23 08:59
- その他(資産運用・投資) 株やピットコイン未知です。教えて下さい 本など詠んでみても専門用語、イマイチ仕組みが分かりません。 6 2023/06/29 09:24
- 株式市場・株価 同日中の特定口座内での株式売買における実質損益について 4 2022/06/22 05:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
複数シートからデータを拾って...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
エクセルで商品台帳
-
Excelで日付変更ごとに、自動的...
-
トランジスタの選び方
-
エクセルのマクロ 【】の中だ...
-
エクセル ピボットテーブルの...
-
エクセル2010 別シートへのデー...
-
重いExcelファイルのことで教え...
-
CMOS-IC CD4007UBEのnmosfetの...
-
Excelで複数のファイルを一つの...
-
エクセル マクロ "特定の日付...
-
エクセルで、ひとかたまりのデ...
-
複数のシートの値を一つのシー...
-
簡単なエクセルマクロについて
-
他社代替品教えて下さい!!
-
TTL(LS)のデータシート?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
エクセル 縦に長い表の印刷時...
-
VBAで CTRL+HOMEの位置へ移動...
-
EXCELで2つのファイルから重複...
-
トランジスタの選び方
-
他のシートの一番下の行データ...
-
Googleスプレッドシートフィル...
-
Excel 売上管理シートに入力し...
-
EXCEL の表を一行ずつシートに...
-
エクセルで名簿を50音で切り分ける
-
excelマクロで複数シート間のデ...
-
エクセルVBAで、特定文字から始...
-
【エクセル」 特定のセルで条件...
-
時間帯の重複を除いた集計について
-
エクセルのカメラ機能について
おすすめ情報