• 締切済み

楽天RSSからエクセルVBAを使用し確実にデータ受信する方法に関して質問です。

楽天のRSSとGMO証券のAPIを使用し、エクセルVBAにて自動売買をしているのですが、RSSのデータを受信出来ていない事が多々あり非常に困っております。 どういう事かと申しますと、3台のPCで自動売買エクセルを起動し1秒ごとに銘柄情報を監視し、条件を満たした銘柄を売買すると言うものなのですが、肝心のデータがRSSから受信出来ませんと、売買条件を満たせ無い為、売買出来ないと言う状況です。 3台起動していても、平均すると1.2台程度の稼動率かと思います。 そこで、エクセルVBAを使用し、RSSから確実にデータ受信する方法をご存知の方がいらっしゃいましたらアドバイス頂ければと思います。 個人的には、データ受信要求を投げてから、ある一定時間以上応答が無い場合、再度RSSからデータ受信要求を投げる。 もしくは、RSS.exeを再起動すると言う方法になるかと思います。 エクセルVBAにて現状の改善方法をご存知の方、宜しくお願いいたします。

みんなの回答

回答No.1

先にダメになっているのは RSSの方なのでしょうか もし毎秒受信して たくさんのセルを更新して たくさん計算するなら Excel側は処理できているのでしょうか Excelが先にギブアップして  RSSが送っているデータを受信できない  受信処理をExcelができない ということはありませんか シートとコードを見せてほしいところですが いろいろ秘密もたくさんあるかもしれないので  もし可能なら見せてください 下記は参考です シートの更新の方法でExcelの負荷が変わります http://officetanaka.net/excel/vba/speed/index.htm http://www.microsoft.com/japan/windowsserver2003/ccs/excel_service.mspx 単純には セルを配列として取り込んで 計算は配列で行い http://officetanaka.net/excel/vba/speed/s11.htm 極力セルにアクセスする回数を減らし負荷を下げます ここまでくると  シートに意味があるか シートは必要か ということになります  シートに書くのをやめればコード上の処理だけになります  自動運転ならシート表示は最低限でいいはずです もし可能なら データはExcelではなく 外に置きます シートにデータを置かないで下さい シートは複雑で多岐にわたる 属性を持っているため使うとそれだけで負担になります MySQLなどDB またはTXT,CSVなどを置き場所にして 必要なデータは外に 処理/判断はコードで 表示は最低限 ユーザフォームやHTMLやExcel以外にします もし可能なら Excelから離れて VBS WSH HTA を使用して VBAの知識を使って 別のものを作成することをおすすめします Excelの負担を回避してVBAの資産を有効利用できる良い方法だと思います くわしい内容が分かれば詳しいサンプルを用意しますが どの程度の処理内容が理解可能かによります VBAはくわしいのでしょうか 

koji528
質問者

お礼

anotherone さん 丁寧なアドバイスありがとうございます。 問題点がうまく伝わっていないようでしたので、再度、記載させて頂きます。 9時にマーケットがオープンしその直後にRSS関数のセルに値が入り更新されると言うのが通常の動きですが、今の問題は9時を過ぎてもRSS関数のセルの値が一切変わらず、更新されないと言う事が問題の部分となります。 原因は、エクセルハング、もしくは、RSS.exeからデータ配信がされない(RSS.exeのハング)もしくは、RSS内部の処理でタイムアウト値が設定されておらず、データ受信待ちのまま待機し続けていると言った所かと思います。 なんとなくの予想は可能ですが、実際何が原因で今の問題が発生しているか全く分からない為、問題の切り分け、及び、対処を行いたいと思っております。 問題を切り分ける為に、VBAにて、DDEサーバ(RSS.exe)、及び、DDEクライアント(エクセル)の状態を監視し、ハングしている方を再起動などの対策をとりたいのですが、VBAでどのようにして状態監視をすれば良いのか分からない為、問題の切り分けが出来ていないのが現状です。 上記の問題切り分けの為にDDEサーバ、DDEクライアントの監視方法等ご存知であれば、教えて頂けると幸いです。

koji528
質問者

補足

>>続きです。 anotherone さんのアドバイスを元にエクセルの修正を行い、不要な処理を除くよう対策をさせて頂きたいと思います。 今までは、1秒ごとにVBAにて監視(300銘柄×11アイテム=MAX:3300セル)しており、CPUリソースの消費率は、20~30%程度でしたので、CPUネック、もしくは、エクセルがハングしてデータ受信出来ていないと言う事は想定外でしたが、アドバイス頂いたように不要な監視セルを削除したり、不要な処理を省く事で動きは以前よりかなり軽くなったように思いますので、この対策で、エクセルハングは起こり辛くなったように思います。 ちなみに、自分は、データベースエンジニアをしており、VBAやVB.netは最近勉強しはじめたばかりですので、難しい事は分かりません(Win32API使う等)が、基本的なプログラミングの部分は問題無いと思います。 また、最終的には、VB.netとデータベースと連携したものを作ろうと考えておりますが、まずは、自分の思ったようにプログラムが動く事が最低条件かと思っておりますので、この問題をまずは解決したいと思っておりますので、お手数をおかけ致しますが、ご協力よろしくお願い致します。

関連するQ&A

  • エクセルVBAで時計のリアルタイム表示と楽天証券のRSSを並行処理することは不可能なのでしょうか??

    よろしくお願いいたします。 エクセルVBAで時計のリアルタイム表示と楽天証券のRSSを並行処理することは不可能なのでしょうか?? 最近作り始めたものでまだまだであり、壁にぶつかり続け、今回再び巨大な壁にぶつかりましたので皆様のお知恵を拝借させていただけたらと思っております。 エクセルVBAで比較的細かな投資関連のデータを集めて解析させようと思い、リアルタイムの時計を表示させて、その時間を参照してデータを取得するようにしていきたいのですが、リアルタイムの時計をVBAで動かしていると、楽天証券のRSSでのデータが全く取得されていないようで、やはりVBAが常時動いているとRSSでのデータ取得は素人の考えでは不可能だと思われます。 この点に関しては改善することができましたら大きな一歩となりますので、何か良い方法をご存知の方がおられましたら御教授いただけたらと思っております。 何卒宜しくお願い致します。

  • 楽天RSSからDDEで直接データ取得してcsv出力

    楽天RSSというものを用いて株価のリアルタイムデータを受信することができます。 リアルタイムデータを表示させたいセルに Excel であれば =RSS|'4776.T'!現在値 LibreOffice Calc であれば =DDE("RSS","4776.T","現在値") などと入力しておけば リアルタイムで最新の値が更新されて表示してくれます。 しかし、表計算ソフトを経由するのはシステムに余計な負荷をかけると思いますので、 低負荷な言語を用いて DDEから直接データを取得して リアルタイムデータを次々にcsvに出力していきたいです。 http://okwave.jp/qa/q2795438.html にVBAを使用する方法が書かれているのですが VisualBasicの系統は使ったことがありませんので、 なるべくならCygwinを用いて シェルスクリプトやC言語により同じことを実現したいです。 (UNIX系のやり方が無理であればVBAを憶えることにしますけども) どのようにしたらできるでしょうか? とっかかりの部分を教えていただきたいです。 また、楽天のRSS(RealtimeSpreadSheet)がブログ関連でよく出てくるRSSとは 元々の名前からすると違うような感じですが 更新をチェックしているという点から見れば同一かもしれないという気もしまして この辺りもよく理解できておりません。 ご存じの方、どうぞよろしくお願いします。

  • Excel 2003のVBAマクロデータをExcel 2007で見たい

    Excel 2003のVBAマクロデータをExcel 2007で見たい。 Excel 2003でVBAマクロを登録したExcelファイルがありますが、今回、Excel 2007をインストールして、該当ファイルを開いたところ、「マクロデータを削除しました。」とメッセージが出て、VBEを起動してもマクロが見えなくなりました。OSはWindowsXP SP3です。Excel 2003で登録したVBAマクロをExcel 2007で削除されないで、次の2点について、可能にするにはどうすればよいか、ご教示願います。 (1)マクロデータを残す方法。 (2)マクロ起動する方法。

  • EXCELのVBAでデータの自動認識(データの範囲等)をとる方法を教え

    EXCELのVBAでデータの自動認識(データの範囲等)をとる方法を教えてください (並び替え等で自動範囲認識しますが簡単にVBAでその範囲をとる方法はないですか?) 今までは1件ずつカウントしていました

  • Excel VBA で Webからデータを取得する方法

    Excel VBAを使ってWebページからデータを 取得する方法を探しています。 最初に、そのWebページの認証ページにIDをパスワード をVBAから自動で送信したいのですが、方法が全く わかりません。 認証ページはJavascriptを利用したページです。 どちらかご存知の方がおられましたら、 ご教授ください。

  • VBAでEXCELファイルからデータを抽出する方法

    VBAで、サーバーにある大量のデータを含むCSVファイルから、ある条件に一致するデータを抽出する方法を教えてください。 (例)  コード   名称  在庫数  その他データ  A12300  ○○○  999   XXXXXXXX  A12400  ○○○  999   XXXXXXXX  B12500  ○○○  999   XXXXXXXX  B11100  ○○○  999   XXXXXXXX  C11200  ○○○  999   XXXXXXXX 上記データからコードの一桁目が「A」と「C」のものを抽出する場合の、VBAを教えてください。 抽出後、EXCELの別ファイルに上書き保存します。 デイリーで処理をするので、VBAで自動化したいのです。 よろしくお願い致します。

  • エクセルVBAで質問です。

    エクセルVBAで質問です。 不用な空白行を削除したいのですが、どのようにコードを書いたらいいでしょうか? 添付の画像のような表を作っています。 添付のではAAからGGまでデータが入っていますが、いつもデータ数は違います。ただし20行目 より多くなることはありません。データ範囲の5行目から20行目まででおさまります。 このような条件で、データのない空白行を自動で削除するようにしたいと考えています。 よろしくお願いします

  • エクセル_VBA

    エクセルVBAで一定の時間でデータの処理(自動更新)ができる方法があれば教えてください。

  • エクセルVBAを利用してのデータまとめに関して

    よろしくお願いします。 エクセルVBAを利用してデータまとめ の方法が学べる手段(HP、本)の紹介をお願いします。 エクセルを用いて測定データの集計を行っています。 エクセル関数はある程度理解出来ており、 関数で出来ること、出来ないことの判別もつくようになってきました。 関数で出来ないことをVBAで行いたいと考えています。 VBAは全くの初心者です。 自分なりに調べてみましたが、これだ!というものが見つかりません。 やってみたいことは、自動で他のエクセルファイルの指定のセルをコピーして、本体のエクセルファイルの指定のセルに貼り付ける 等です。   よろしくお願いします。

  • VBAでPPTからEXCELにデータをコピー

    こんにちは、ANIMと申します。 EXCELのVBAで下記を実現したいのですが、方法がわかりません。 ご存知の方、どうかご支援よろしくお願いします。 ・POWERPOINTの表のデータをEXCELのセルに貼り付けたい。 ⇒表のデータを手作業でコピーして、EXCELに貼り付ければよいのですが、   PPTのファイルが大量にありVBAで対応したいです。 ・POWERPOINTの表のデータをEXCEL VBAで取り込む方法がわかりません。  (TEXTのデータではなく、表の中のデータの取り込み方です) ・POWERPOINTの表の形式は同じ(例えば、3行5列の表)です。

専門家に質問してみよう