• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2002で、OnTime メソッドを使い、15分毎にCalculateする方法を選択し、15分毎に,別のセルの値を+1ずつ増加させる方法)

EXCEL2002での15分ごとのCalculateと値の増加方法

このQ&Aのポイント
  • EXCEL2002でセルの時刻(A1)が15分更新されるのに対応させて、他のセル(B1)の数値を1ずつ増加させる方法を教えてください。具体的には、OnTimeメソッドを使って15分ごとにCalculateし、セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む方法を知りたいです。
  • 上記の方法において、VBAを使ってプログラムを作成する際の手順を教えてください。具体的には、OnTimeメソッドを使って15分ごとにCalculateし、セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む方法を教えてほしいです。
  • 参考URL(http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv214.html)に掲載されている方法を参考にしてもうまくいかないため、実行可能なプログラムの形で具体的な手順を教えてほしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.10

こんにちは。Wendy02です。 >メッセージウィンドウで、いつもやっている事と同じで、必ず『はい』を押して、終了させているのですが、どうしても、上記のような結果となってしまいます。 それでは、Module1 等をすべて削除した時点で、Ctrl + S で、保存してください。 何かの反応が出てくるはずです。 それから、もしも、それが、PERSONAL.XLS でしたら、今の時点では、そのPERSONAL.XLS を、 C:\Documents and Settings\[ユーザー名]\Application Data\Microsoft\Excel\XLSTART\ の場所から、一時退避したほうがよいかもしれません。 ただ、そういうことではない場合、 つまり、すべてが割り込みが働いている状態でしたら、私がいままで書いたことでは削除できません。 本来ですと、その製作者に問い合わせるのが筋なのですが、一応、その場合の処理の仕方は、 [スタート]-[すべてのプログラム]-[Ctrl キーを押しながら+Excelをクリック] で、 [セーフモードで起動] それから、それぞれのModule1 等の処理を、私がいままで書いたようにします。

TRADKING
質問者

お礼

毎回、如何なる時でも、たいへん慈悲深い、丁寧な対応で、応じて下さり、本当に、頭の下がる思いです。  本当に有難うございます。  何時も、御気に掛けて下さり、御心配為さって下さっているようで、たいへん申し訳ありません。  御報告が遅れました事、本当に、申し訳ありませんでした。中々に、四苦八苦して、熟考中でありまして、御報告が遅れました。  前回の質問中、 (1)前半部の >メッセージウィンドウで、いつもやっている事と同じで、必ず『はい』を押して、終了させているのですが、どうしても、上記のような結果となってしまいます。 それでは、Module1 等をすべて削除した時点で、Ctrl + S で、保存してください。 何かの反応が出てくるはずです。  ★については、試行してみた結果、考えているようには、為らず、 然して、 (2)>それから、もしも、それが、PERSONAL.XLS でしたら、今の時点では、そのPERSONAL.XLS を、 C:\Documents and Settings\[ユーザー名]\Application Data\Microsoft\Excel\XLSTART\ の場所から、一時退避したほうがよいかもしれません。  以下の部分については、その”可能性”も含め、引き続き”検討⇒考え中”ということでありまして、  ★★今現在の”方向性”としては、VBAの当該モジュールのみを残し、他・残りの全てのワークシートを、エクスポートする形で、バックアップできないでしょうか?★★といった、不可能か可能か? 自分では、判別しづらいことを考えています。(ひょっとしたら、ちょっと考え過ぎかも?(^_^;))

その他の回答 (11)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.12

こんばんは。Wendy02です。 #11 の回答への直接の返事はついていないようですが、最近、やっと分かったことですが、バックアップとるのは、インターネットアクセスする、Excel用アドインを外せば出来るはずです。アドインを入れたままでは、出来ないのです。まず、直接インターネットにリンクしているものは外してから、バックアップを取ってください。

TRADKING
質問者

お礼

御回答有難うございます。 御礼が送れて申し訳ありませんでした。 (1)読んで理解するまでに、私の知識の乏しさゆえ、時間が掛かり、 (2)更に、深く理解しないと、『自分のワークシート』へ充分に『当てはめて落とし込む』ことが出来ず、    どうしても『他の方』より、時間が掛かってしまいます。  これまでも、『じれったいような、もどかしさ』を抱え、相談に応じて下さっている事、本当に感謝しております。  もう少し、考える時間を下さい!

TRADKING
質問者

補足

 毎回、快く、回答に答えてくださる御気持ちに、ついつい甘え、時間を越え、考え過ぎてしまいました。  次回からは、ボランティアで応じて下さる、回答者様の御負担、御迷惑のことも考え、速やかに、自らの質問の取り下げも、行っていくよう心掛けます。  自らの技量を越える質問については質問を手控えるよう心掛けますので、今後も、私の質問を見かけましたら、広い寛容な御心で、御答え頂きますよう、伏してお願い申し上げす。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.11

こんにちは。Wendy02です。 > ★については、試行してみた結果、考えているようには、為らず、 ということは、モジュールのコードをエキスポート後、「削除して保存できた」、ということでしょうか?それなら、問題がないと思いますし、私の Personal.xls の退避の話などは無視してよろしいかと思います。 > ★★今現在の”方向性”としては、VBAの当該モジュールのみを残し、他・残りの全てのワークシートを、エクスポートする形で、バックアップできないでしょうか? 話が、飛んでしまっています。最初の問題が解決したのか、こちらでは分かりません。それを別にして、次の問題に入るのでしたら、個別のバックアップというよりも、元のブックのバックアップでよろしいのではありませんか?そして、必要なだけ、残しておけば簡単だと思います。しかし、最初の問題が解決の目処が立っているか、わからなくては、こちらは、なんとも言いようがないのです。きちんと、一つをクリアしてからのほうがよいと思います。同時に平行的には成り立ちません。

TRADKING
質問者

補足

 毎回、如何なる時でも、たいへん慈悲深い、丁寧な対応で、応じて下さり、本当に、頭の下がる思いです。  本当に有難うございます。  何時も、御気に掛けて下さり、御心配為さって下さっているようで、たいへん申し訳ありません。   御報告が遅れました事、本当に、申し訳ありませんでした。中々に、四苦八苦して、熟考中でありまして、御報告が遅れました。  前回の質問に対するお答えの中で、 (1)前半部の =IF(OR(ROW(A1)>10,COUNTIF(A1:A100,">2")<COUNTA($A$1:$A$100)-COUNTIF($A$1:$A$100,"<30")+ROW(A1)-1),"",LARGE($A$1:$A$100,COUNTA($A$1:$A$100)-COUNTIF($A$1:$A$100,"<30")+ROW(A1)-1)) については、上記・計算式を入力したセルに、解かりやすい具体数値として、私のワークシートでは、3.75と出たのですが、以下、ご記憶下さい。  この3.75という数値は、最大値でも、最小値でもなく、『上から何番目』という定義の数値でいうと、一体何番目に当たるのでしょうか?『平均値』ということではないですよね?  回答の本文では、『10項目が出てきます。』と在りますので、本文にある通り、しっかり対応させる形で、『10セルに、10項目出す』には、他に、どのような当該箇所を、可変させて、セルに入力させていったら良いのでしょうか? (2) >オートフィルタ機能 は使いません。 こう記された理由については、実際に使用してみて、実にエラーが多く、使用に耐え得ないということを、実践的に理解致しました。  VBAの教科書に関しては、いい物をご紹介頂いたお陰で、調べもつくのですが、関数343の詳細については、下記アドレス  ​http://t_shun.at.infoseek.co.jp/My_Page/Excel-FNC/fnc_title.htm​  が、私が知りうる範囲では、一番、詳しいサイトであり、  代表的なものばかりではなく、これら★★関数343の詳細な解説について、詳らかに記載したサイト★★を御存知でしたら、ご紹介頂けないでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.9

こんばんは。Wendy02です。 右クリックメニュー⇒⇒⇒[Module数字] の解放 「削除する前にエクスポートしますか?」 と聞いてきますね。エクスポートしても、しなくても、「キャンセル」を押さない限りは、その後の結果は、「Module1」などは消えているはずです。 しかし、ブックを終了する前に、更新したブックを保存しなければ、また戻っているはずです。

TRADKING
質問者

お礼

 即座に、御回答下さり、有難うございます。 >しかし、ブックを終了する前に、更新したブックを保存しなければ、また戻っているはずです。  そうですか。 私も、勿論、ブックを閉じる時は、『更新した内容を保存してブックを閉じますか?』という、メッセージウィンドウで、いつもやっている事と同じで、必ず『はい』を押して、終了させているのですが、どうしても、上記のような結果となってしまいます。  一体、何処に原因が在ってそうなるのか?不思議でなりません。 難しいですねぇ~、VBAって。初心者の私には、少々、敷居が高かったのかもしれません。お作り頂いたプログラムを勝手に使わせて頂きながら、★環境の違い等で使用出来ず、こんなことを何度も聞いたりして、本当にすみません。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

TRADKING 様 こんばんは。Wendy02です。 最初に、 >★『中堅所のVBA専門掲示板』の話、たいへん参考になりました。 どちらかというと、回答者さん全体のの礼儀の善し悪しによって決めたほうがよいでしょうね。 一人や二人おかしな人は、どこでもいますから、それはしょうがないのですが、全体的に荒れた雰囲気の場所もあります。 しかし、回答者側のみる掲示板と、質問者側がみる掲示板とは違いますから、はっきり言えませんが。 ここの掲示板は、長いスレッドが続かせるのは、なかなか難しいです。私は、自分の書いたものに対して、Excelの表で管理して、開け締めの状態が分かるようになっていますが、普通の人は、そういうようには出来ていませんから。 >★★かんたんプログラミング Excel2003 VBA 基礎編 (単行本) 辺りでも、理解可能でしょうか?★ 私が申していたのは、この本を指しています。内容がかなり細かいなって思いますが、大雑把で、飛ばし読みでよいと思います。私は、この本に出会うまでは、VBAは、覚えられませんでした。もう4年ほど経ちますが、また、思い出しては、この本を読んでいることがあります。(この本の装丁は弱いのか、あまり使っていると、バラバラになってきます)この本のシリーズ、3部の応用編まで終えれば、かなり目立つ存在になりますね。VBAで行える、ほとんどが載っています。 "1人の落後者も輩出しない解説書"というのが、この本のキャッチコピーだそうです。 私は、Excelをスタートしたのも、Windowsに手を出したのも、ほんの5~6年前で、プログランミグも初めてです。まさか、自分が、一通り覚えるとは、思ってもみなかったです。そういう私は、いくつかの本では失敗しています。 若い20代の人は、どんどん覚えるのでしょうけれど、その倍以上の年齢からスタートするとなると、どうにも、ワザやテクニック集の本のページをめくっていっただけでは覚えられません。ただ、私の持論ですが、どんな人でも、1日2時間ぐらいで、だいたい3ヶ月で、VBAはマスターできる、と思っております。一旦、終了したら、後は、実践の中で、徐々に慣らしていくのが一番早いです。

TRADKING
質問者

お礼

 こんばんは!  お返事を頂いた後、これまで時間を掛けて、『マクロの削除』の試行を探ってきたのですが、★私の操作がポイント違いのせいか、30ほどあるシートのA1~B3に規定値で入力されている数字が、消えません。  前回、書き込み頂いた内容の中ほど、『下記の箇所』で、  >★★一体、どのようにしたら、30ワークシート全てのVBAが、完全に、{削除}出来るでしょうか?★★ さて、どのようなマクロにもよります。私の#2のマクロは、全体に支障がなければ、左上のプロジェクト・エクスプローラで、[Module数字] のところにマウスを当て、右クリック-[Module数字] の解放 で、そのすべてを削除できます。 大事な、アドインは、通常は開きません。開けなければ、削除できません。 >左上のプロジェクト・エクスプローラで、[Module数字] とあるのは、  標準モジュール   Module1 ← Module2 ← Module3 ← を、それぞれ、右クリックメニュー⇒⇒⇒[Module数字] の解放 で、そのすべてを削除できるとあるのですが、実際に実行してみた結果、上記の結果となってしまいました。  そこで、Module1~3は、しっかりエクスポートしたうえで、マクロを全削除した筈の、ワークシートを、もう一度、開いてみると、  標準モジュール   Module1 ← Module2 ← と、残っていまして、このModule1 Module2については、★元々のデフォルト値かもしれませんが、それでも、Module1 Module2が残っているところを見ると、やはり、マクロを全削除出来ていないのではないか?と、思ってしまいます。  恥ずかしながら、何か良いアドバイスを戴けましたらと思い、もう一度だけ、お答え頂けないでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

TRADKING 様 こんばんは。Wendy02です。 >『できる大事典 Excel VBA 2000/2002/2003 対応』 インプレス出版  この種のものは、一つあれば十分です。 VBAを覚えるというのは、英会話や他の言語を覚えることと同じ手順です。ただ、子供と大人が覚えるのでは、覚え方が違います。暗記しようとして、仮に暗記しても、とても覚えられるものではありません。体系的なものから攻めていくのが早いのです。 まず、いきなりコレクション(大村あつしさんの著書ではここから)とはいかないので、VBAでいう一般のオブジェクト(ブック、ワークシート、セル)があって、そこに、プロパティ(値の設定と取得)と、メソッド(その処理) をいくつかやってみて、オブジェクトという「概念」を覚えます。(私は、「概念」という言葉の代わりに、「イメージ」という言葉を良く使っています。簡単にいうと、生き物の蛸のようなもので、それぞれ、違う足がついていて、違う動きをします。) 次は、それを文型として使ってみます。 If .... For i = 1 To .... などの構文に当てはめます。 そこまで出来たら、全体的なこと、つまり、セルがあれば、その上のワークシートと合わせて、使うようにしてみます。それが出来たら、違うワークシートへの値の取得、値の代入をします。そして、今度はブックと続きます。 いきなり、大きな完成品を作り上げようとすると、1年掛かっても、少しも進まないことがあります。基礎構文を多く繰り返すことで覚えます。それと、毎日、休まないことが大事です。私でも、旅行で3日休むと、取り戻すのに、その後3日掛かります。すごく、怖く感じます。 ある程度できるようになったら、今度は、もう少し、その周辺、VBAの書き方自体を覚えます。次に、ユーザーフォームや、上級文法に入ります。このようにして、VBAは、段階を踏みながら上級に進んでいきます。とはいえ、半分ぐらいの人は、途中のVBAの書き方あたりで揺らいでいます。それは、Microsoft が、VBAユーザーに見本を見せなくなったのが原因のようです。 >★★一体、どのようにしたら、30ワークシート全てのVBAが、完全に、{削除}出来るでしょうか?★★ さて、どのようなマクロにもよります。私の#2のマクロは、全体に支障がなければ、左上のプロジェクト・エクスプローラで、[Module数字] のところにマウスを当て、右クリック-[Module数字] の解放 で、そのすべてを削除できます。 大事な、アドインは、通常は開きません。開けなければ、削除できません。 >★★【マクロを削除するには】とあって、 > {マクロ}ダイアログボックスで、削除したいマクロを選択して、{削除}ボタンをクリックせよ!とのヘルプ、並びに本の図解を見て、手順に間違いはないと思うのですが、 いいえ、これは、一般的なマクロです。Private キーワードがついたものは、直接、Visual Basic Eitor の中で削除しないと、通常は削除できません。 Visual Basic Eitor の中で、それぞれシートモジュールやModuleをダブルクリックして開け、直接、マウスで選択して削除しないと出来ないです。もちろん、こちらで、禁じ手のひとつ、マクロを消すためのマクロ作成というのも可能なのですが、それは、新たな手間になりますから、やめておきます。また、ユーザー定義関数(Function)を削除すると支障が出るかもしれませんから、良く注意して行ってください。行う前には、バックアップしておいたほうがよいです。 それから、この最初のご質問の解決は、VBAの専門の方が、直接、それを調べない限りは、ラチが開かないような気がします。こちらでは、時間で同期しているものに、マクロを動かすのは、割り込みが入ってしまい不可能だというぐらいなのです。 それと、最後ですが、前回も書いたかもしれませんが、ここのカテゴリでは、VBA専門にし、なおかつネットトレーディングをしている人は、どうやらいないようですが、専門掲示板では、かなりのベテランの人が、この辺りに明るい方がいます。私の今のネットの技術は、その方を通して覚えたものです。直接、そのアドレスを教えるわけにはいきませんが、中堅所のVBA専門掲示板には、一人二人、そういう方がいらっしゃいますので、これに懲りないで、再び、挑戦してくださるようにお願いいたします。何か、私が引き伸ばしてしまったようで申し訳ありませんでした。 これが、私がずっと申し上げたかったことです。

TRADKING
質問者

お礼

 前回、御報告を申し出て置きながら、自らの技量不足の為、こうして遅れてしまい、申し訳在りません。  そうした、たいへんな非礼にも拘わらず、2日と置かずに、このように、たいへん御早い、長文のご回答を下さり、誠に感謝の言葉に堪えません。  本当に有難う御座います。  ★★文中、9行目、『大村あつしさんの著書』ということですが、私ぐらいの初級レベルでも、上記の購入済み本をリファレンス代わりに、学習テキストとして、使用するには、『大村あつしさんの、どの辺りの著書』を購入して使用すれば良いでしょうか? 宜しかったら教えて下さい。★★  ★★かんたんプログラミング Excel2003 VBA 基礎編 (単行本) 辺りでも、理解可能でしょうか?★★  念の為、アドレスは、 http://www.amazon.co.jp/gp/product/4774119660/sr=1-2/qid=1158156489/ref=sr_1_2/503-0480488-9455133?ie=UTF8&s=books  です。  文中、最後のほうの記述にある、★『中堅所のVBA専門掲示板』の話、たいへん参考になりました。独力により、探してみます。ご指摘有難う御座います。  特に、前半部の記述にある、★”習得の為のステップは、実行可能な、順を追った目標を定めて!”というアドバイス、『物の上達には順番が大事』と、思い知りました。★これからの”学習の指針”として、プリントアウトし、本の目次に貼っておこうと、思います。★  今回頂いたアドバイスを、”自らの上達の道標”として、心に留め置き、これからの”学習の指針”として、必ずや、生かして行きたいと、考えます。  ”削除”については、もう少しした後、結果を御報告させて下さい!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

TRADKING 様 #2 # 私自身は、元のプログラムを知らないので、以下のように単独では動いても、相手の方の環境では、この種のマクロでは成功しておりません。 と私が、書いたように、このままですと、今回も、再び、解決をみずに終わってしまうように思います。私としては、やはりダメだった公算が強いように思っております。その理由は、RSS関数が、時間で割り込みが入るので、他のマクロを排除するのではないか、と思っております。ですから、通常の方法では、うまく行かない気がしております。 出来れば、返事をつけてくださると、今後のためにもなるかと思います。よろしくお願いします。

TRADKING
質問者

お礼

誠に申し訳ありません。これほど、手厚くサポートを頂いた上、更に、このような 過分の御配慮、御心配頂き、誠に感謝に絶えません。    #2のプログラム、ご指摘のように、うまくいかなかったのですが、 やはり、それ相応の理由が存在したのですね。  私なりに、自分で、この機会をチャンスに、自学を、より深めた方が良いと、環境がそう教えてくれているんだ!と、思い直して、  以下の本を、身銭を切って購入しました。   『できる大事典 Excel VBA 2000/2002/2003 対応』 インプレス出版  http://dekiru.impress.co.jp/books/information/2004/1888/index.htm     最低限、Wendy02さんの仰っておられる、一般使用者には、★『理解すら難しいVBA用語』等について、おそらく”日本で一番詳しく紙幅を割いた”結果、なんと★926ページ★の大枚になる、易しい(優しい)解説の書だという、掲示板の評判を見て、思い切って購入してみました。  しかし、まだ、あまり読解が進んでいないせいか、やはり理解が伴いません。 実際に、たとえ、小さなプログラムでも、作れるようであれば、少しは違うのかも知れませんが‥‥‥‥‥‥‥‥。  その他にも、実際に、操作してみないと、全く要領を得ない場合もありますよねぇ~。  そこで、御報告に加えて、申し上げ難いのですが、#2のプログラムをEXCELワークシート上から完全に削除する方法を教えては頂けないでしょうか?  ヘルプにも載っていることなのですが、、★実際にやってみたら、マニュアル通りには、決してうまくいかないこととして、もし、同じ本をお持ちでしたら。という意味で、この本の文中52ページを御覧ください。  ★★【マクロを削除するには】とあって、  {マクロ}ダイアログボックスで、削除したいマクロを選択して、{削除}ボタンをクリックせよ!とのヘルプ、並びに本の図解を見て、手順に間違いはないと思うのですが、少しポイントがずれている様で、一つのEXCEL内に、30ほどある、ワークシートのA1~C3のセル内のVBAが消えません。  ★★一体、どのようにしたら、30ワークシート全てのVBAが、完全に、{削除}出来るでしょうか?★★

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。Wendy02です。 『◆補足◆RSSの問題点』 について、少しコメントを入れさせていただくと、問題は、Excel側にあります。MS社側では、次のバージョン(2007)では、XMLの標準化をし、ファイルの構造の問題を解消するとは言ってはいるのですが、今回の「RSS」は、あえて、Excelのアドインにしなければならない、という根本的な問題はぬぐえてはいないように思います。また、RSS関数と戻り値の表示のタイムラグの間に、問題があるのではないか、と想像しています。 >RSS用関数を使用した場合のリアルタイムフィードが切断されるのではないかとのご指摘でしたが、 「リアルタイムフィード」という意味は分かりませんが、 私が申したのは、もともと、そのRSS側のアドインが通信中の場合は、こちらの自前のマクロは、暗黙のエラーか、マクロの切断がされるのではないか、ということです。 >RSS使用中でも、NOW関数の時刻は分単位はおろか、SECOND関数もキチンと”秒”単位で動作致しますので、問題はないのですから、 Now関数は、Excelのワークシート関数ですから、本体がハングしなければ、「計算(Calculate)」という命令のときだけ、値を取得するようにできています。継続的な1本の命令のプログラムの中で動いているわけではありません。中断されようがされまいが、特に本体が死んでいなければ問題はありません。内部のコマンドとVBAは、まったく次元の違うものです。 >EXCEL関数使用オンリーの計算であれば、「頂いたプログラム」により、実行可能ということで、理解して宜しいでしょうか? 相手のアドインが生きている状態で、私の考えているものと同じように、他の介入を阻止させるような命令をしていたら、マクロは動かないだろうから、ともかく、試してください、ということです。RSSの搭載していないところで、試しても、結果的には無駄になるのではないでしょうか。 zap35さんも、私も、動かないコードを作って公開しているわけではありません。しかし、前回のエラーの問題の原因がはっきりしない限りは、同じ問題が出てしまう可能性もあるということです。

TRADKING
質問者

お礼

今回もまた、オンタイムでのいち早い御回答、有難うございます。 初心者である私の質問に対しても、毎回、たいへん解かり易い丁寧な解説で応じて下さり、本当に頭の下がる思いです。感謝致します。  週が明けて、月曜日に、また、事後報告させて下さい!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。Wendy02です。 > 御推察の通り、証券会社の提供するリアルタイムスプレッドシートという、EXCELに、関数を打ち込んで、株価の変動に合わせ、ほぼ、リアルタイムに”株価を取得”し、連動させた計算を行う”仕様”のものです。 やっぱりそうでしたか!これで、私は、3度目ですね。 今まで、私は、古いExcelと古いPCだったので、状況がさっぱりつかませんでした。 「リアルタイム株価受信の方法」のマニュアルをざっと読んでみましたが、結論から言うと、いったん、証券会社からの通信をとめないとマクロによる更新はしないような気がします。 これは、証券会社に口座があって、取引をしていないと、無料ではできないので、ちょっと、試すというわけにはいきそうにもありません。 それと、私は、そのようなリンク方法を良く理解できていません。海外のサイトで、その仕組みを探してくるしかないのかなって思っています。日本のでは、独自で作る人はいても、その仕組みを公開している人がないように思います。 独自のユーザー定義関数を持っていて、それを、いったん、通信によって、取得するというおかしな関数のようにように見えますね。証券会社のホームページにログインしていないと、その関数は正しくは解を返さないのではないでしょうか?ユーザーのカスタマイズに応えるためだと思いますが、考えてみると、そういう方法しかないかなって思いました。 ある程度、コンピュータが分かれば、タスクマネージャのプロセスや、また、ファイアウォールについているリアルタイムで通信ポートを調べるツールで、お調べになっていただければ、Excelの通信の出入りが、よりはっきりとするかと思います。 今、調べた限りは、通常のアドインのような気がします。最近は、特殊なアドインもありますが、そこまでは手が込んでいそうにはありません。 実験的に、相手のコードを殺して、自分のコードを活かす方法を試したいとは思いますが、当面、今、ここに出ているコードは、ざっと試してみてください。たぶん、うまくいかないはずですが。 実際に、稼動した状態ですから、土日は試せないなら、月曜日以降でかまいません。 >『エラー番号』とは、どのようにしても、表示されず、解からなかったのですが、 上記の場合、何も、出なかったと思います。 > 実行可能なプログラムの形で教えて頂けないでしょうか? 他の言語でコンパイルせずに使う方法としては、オートメーションを使う方法がありますね。Excel本体(Application)は、通常、Winの中でひとつしか動きませんが、この方法ですと、複数動きますが、元のRSSを試せませんし、私の身近な人にもいませんもので、ちょっと手が出せません。それに、自分が同じ立場だったら、一度は、最初から自分で作ってみる価値のあるものだと思います。

TRADKING
質問者

お礼

 このように、いち早く、丁寧で、詳細な御解説、毎回毎回、本当に、有難うございます。  毎回、たいへんな御骨折りのうえ、こうして、長文でのご回答、誠に、有難く、感謝致します。 >やっぱりそうでしたか!これで、私は、3度目ですね。 という事ですので、もう、すっかり、ご存知のこととは思いますが、 RSS用関数について、最も詳しく書かれた箇所は、★ツールの使用ユーザー向けに提供されたページとして、一般の方にもアクセスできる  http://www.rakuten-sec.co.jp/MarketSpeed/onLineHelp/msman1_11_4.html  このリンクで、より一層詳しい状況を、お知り頂けると、思います。  ここからは、逆質問のような形なのですが、 >"リアルタイム株価受信の方法"というPDFファイルは、初見でした。      http://www.preco.co.jp/pdf/RSS_manual.pdf  のことですよね。  21/22pに、『★補足★RSSの問題点』としてここに書いてある通りだとすると、 ★配信システムそのものであるRSS がとても不安定で,使い物にならない★かのような、一部、明らかに誤った記述がありますが、現在では、改善が進み、そのようなことは、全くありません。  一種のソフトウェア使用許諾書みたいな、責任をRSSに不当に押し付ける、類のよくある記述と考えるのが適当です。  あくまで、★誤解を流布させるような記述★を、先方である証券会社の承諾も無く、無配慮に掲載することには問題があると思い、蛇足ながら、書いてしまいました。  本来のテーマでは、RSS用関数を使用した場合のリアルタイムフィードが切断されるのではないかとのご指摘でしたが、  ★RSS使用中でも、NOW関数の時刻は分単位はおろか、SECOND関数もキチンと”秒”単位で動作致しますので、問題はないのですから、  ★RSS関数(=独自のユーザー定義関数)で情報を取得する★以外の部分での、★EXCEL関数使用オンリーの計算★であれば、★頂いたプログラム★により、実行可能ということで、理解して宜しいでしょうか?  たいへん長い文章となってしまいました。申し訳ありません。最後の質問ですので、何卒、宜しくお願いします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

前回、回答したものです 補足に「エラーが…」と書かれていたのを見逃しておりました。2時間程度の動作確認をしたものをupします Option Explicit Sub Auto_Open() Dim wkMIN As Integer, TargetTime, WaitTime, wktime WaitTime = TimeValue("00:00:10") wktime = Now wkMIN = Application.Floor(Minute(wktime) + 15, 15) If wkMIN = 60 Then TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("1:00:00") Else TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") End If With Worksheets(1) .Range("A1").Formula = "=now()" .Range("B1") = 1 End With Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim wkMIN As Integer, TargetTime, WaitTime, wktime Calculate wktime = Now WaitTime = TimeValue("00:00:10") wkMIN = Minute(wktime) wkMIN = Application.Floor(Minute(wktime) + 15, 15) If wkMIN = 60 Then TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("1:00:00") Else TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") End If Worksheets(1).Range("B1") = Worksheets(1).Range("B1") + 1 Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime, wktime On Error Resume Next wktime = Now For i = 0 To 16 TargetTime = TimeValue(Application.Text(wktime, "hh") & ":" _ & Application.Text(Minute(wktime), "00") & ":00") + _ TimeValue("00:" & Application.Text(i, "00") & ":00") Application.OnTime TargetTime, "Macro1", , False Next i End Sub

TRADKING
質問者

お礼

zap35様、重ね重ね、本当に有難うございます。 >見逃しておりました。  なんて、とんでもない。もったいない、お言葉です。  私の理解が伴わず、御報告が遅れていましたものを、今日、書いた、その日のうちに、こうして、ご返事を下さり、 >2時間程度の動作確認をしたものをupします  して下さるなんて!   本当に、感謝しても、感謝しても、感謝したりないくらいです。  本当に有難うございます。  早速、直ちにプログラムを走らせてみます!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 何のために、このようなマクロを行うのでしょうか? 最近、公開株式のデータを取得するという方が、このようなマクロを手に入れたいとおっしゃいます。実際は、内容的にひじょうに特殊な作業をしているようで、その場合は、Calculate イベントが必要になります。しかし、別のアドインなのか、特別なプログラム上なのか、私自身は、元のプログラムを知らないので、以下のように単独では動いても、相手の方の環境では、この種のマクロでは成功しておりません。 なお、掲示no. 2292225 , #3 のエラーの内容が、依然、不明ですが、エラーが出たときは、必ず、エラー番号と内容を教えるようにしてください。回答者の方は、どうしようもないことがあります。 前回のご質問で解決しなかったのですから、できるだけ、前回のほうは、締めたほうがよいと思います。内容が、ほぼ同じですから、マルチポストになってご質問自体が削除の対象になります。 このご質問に書かれてある仕様には直接つながりません。Calculate メソッドは、揮発性関数の値を再取得するためのもので、マクロを動かしている限りは、直接、マクロから行ったほうがよいからです。 なるべく、セルのA1 の書式設定はしておいてください。 必要に応じて、ユーザー設定部分を修正してください。 '-------------------------------------------------------- '標準モジュール設定 Private SetTime As Date Private TimeFormat As String 'ユーザー設定 何時間おきか? "時:分:秒" Private Const AddTime As String = "00:15:00" Sub Auto_Open() 'ブックを開いて起動 Dim myDate As Variant   Worksheets("Sheet1").Select   TimeFormat = Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal   If InStr(TimeFormat, ":") = 0 Then   '書式が違う場合は、キメウチされます。     TimeFormat = "yy/mm/dd hh:mm:ss"   End If   myDate = Worksheets("Sheet1").Cells(1, 1).Value      If CDate(myDate) + TimeValue(AddTime) <= Now Or myDate = "" Then     SetTime = (Int(Now / TimeValue(AddTime)) + 1) * TimeValue(AddTime)     Worksheets("Sheet1").Cells(1, 1).Value = SetTime     Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal = TimeFormat   Else    SetTime = (Int(CDate(myDate) / TimeValue(AddTime)) + 1) * TimeValue(AddTime)   End If    Worksheets("Sheet1").Cells(1, 2).Value = 1   Debug.Print SetTime   Application.OnTime SetTime, "CountMacro" End Sub Private Sub CountMacro() Dim i As Long   SetTime = SetTime + TimeValue(AddTime)   Worksheets("Sheet1").Cells(1, 1).Value = SetTime   Worksheets("Sheet1").Cells(1, 1).NumberFormatLocal = TimeFormat   If IsNumeric(Worksheets("Sheet1").Cells(1, 2).Value) Then    Worksheets("Sheet1").Cells(1, 2).Value _    = Worksheets("Sheet1").Cells(1, 2).Value + 1   Else    Worksheets("Sheet1").Cells(1, 2).Value = 1   End If   Debug.Print SetTime   Application.OnTime SetTime, "CountMacro" End Sub Sub Auto_Close() '設定解除用 On Error Resume Next   Application.OnTime EarliestTime:=SetTime, _   Procedure:="CountMacro", Schedule:=False     If Err.Number > 0 Then   '異常終了    MsgBox Err.Number & ": " & Err.Description    Err.Clear   Else    MsgBox "時間設定(" & Format(SetTime, TimeFormat) & ")は解除されました", vbInformation   End If End Sub '--------------------------------------------------------

TRADKING
質問者

お礼

朝方、早い時間にも関わらず、こうして、ご回答下さり、誠に、有難うございます。 貴方は、なんて、お優しい方なのですか?  見ず知らずの私に対し、これほどの、お骨折りを頂きまして、感謝の言葉に絶えません。  本当に、有難うございます。  このサイトで、伺うのは、まだ、経験が浅いため、質問も要領を得ず、解かりにくい点が多く、すみませんでした 前回、質問させて頂いたことを、一旦、締め切ってしまうと、 (1)回答者の方が、『その後、解決方法について、新たに思いついた』ことを書き込めなくなって、失礼。 (2)『もう、解決済みのことだから』、と以降、注目して下さらなくなるのではないか?  と、思って、気が気でなかったのです。  このように、また、たいへん、ご親切に解説して下さる、『神様』のような存在の方(ですから、本当に、感謝いたします。)のご登場で、安心して、前回質問に、終幕の幕引きを致したいと思います。  ところで、本来の質問のテーマに関して、 >何のために、このようなマクロを行うのでしょうか? Wendy02様の『具体的に、どのような使用目的のマクロであるか?』との御尋ね。  御推察の通り、証券会社の提供するリアルタイムスプレッドシートという、EXCELに、関数を打ち込んで、株価の変動に合わせ、ほぼ、リアルタイムに”株価を取得”し、連動させた計算を行う”仕様”のものです。  そこで、上記のような質問をさせて頂きました。。 >なお、掲示no. 2292225 , #3 のエラーの内容が、依然、不明ですが、エラーが出たときは、必ず、エラー番号と内容を教えるようにしてください に関してですが、『エラー番号』とは、どのようにしても、表示されず、解からなかったのですが、  頂いた、プログラムならば、状況が一変するかと、思います。  まずは、『何事も経験から』、早速、頂いたプログラムを、走らせ、実行させて頂きます。  有難うございます。本当に感謝致します。  まずは、感謝の気持ちを申し上げたく、御礼の言葉にかえさせて頂きます。

関連するQ&A