• 締切済み

楽天RSS関数の実行終了の検知方法

楽天MS2のRSSで例えばRssChart関数を発行した後、応答待ちや配信中の文字が表示されます。 この文字列を、VBAで取得することができるでしょうか。 例えばセルB4に関数を記述したとき、B4をVBAから見ても、関数名の文字列が見えるだけです。 目的はRssChart関数の実行終了を確実に知るためですが、現在OnTimeで1秒後ごとに実行していますが、失敗するとことがあります。 2,3秒と大きくすると減るわけですが、効率がわるいです。 配信中まで待つことができればと考えたのです。 他の方法として、全取得後、欠落部分を再取得する方法もかんがえられますが、素のままでできないかと・・・。

みんなの回答

回答No.1

回答できます。 VBAを使用して、楽天MS2のRSSの応答待ちや配信中の文字列を取得する方法があります。 まず、"Microsoft WinHTTP Services"を参照設定に追加する必要があります。 VBAエディタで以下の手順を行ってください。 1. ツールメニューから「参照設定」を選択します。 2. 参照設定ウィンドウが表示されたら、一覧中から「Microsoft WinHTTP Services」にチェックを入れ、OKボタンをクリックします。 以下のコードをVBAに記述してください。 ```vba Sub GetRssStatus() Dim req As WinHttpRequest Dim url As String Dim responseText As String ' 取得したいRSSのURLを設定 url = "https://example.com/rss_feed" Set req = New WinHttpRequest req.Open "GET", url, False req.Send responseText = req.responseText ' 応答待ちや配信中の文字列を抽出 If InStr(responseText, "応答待ち") <> 0 Or InStr(responseText, "配信中") <> 0 Then MsgBox "応答待ちや配信中の文字列が存在します。" Else MsgBox "応答待ちや配信中の文字列は存在しません。" End If End Sub ``` 上記のコードでは、"https://example.com/rss_feed"の部分を取得したいRSSのURLに変更してください。 また、RSSのURLに応じて「応答待ち」と「配信中」の文字列を変更してください。 このコードを実行すると、指定したRSSの応答待ちや配信中の文字列が存在するかどうかを判定することができます。 もし、応答待ちや配信中の文字列が取得された場合は、RssChart関数の実行が終了していないことを意味します。 この方法を使用することで、VBAから楽天MS2のRSSの状態を取得し、RssChart関数の実行終了を確認することができます。ただし、実行中のRSSによっては、取得できない場合があるかもしれませんので、ご注意ください。 ------ こちらの回答はAIエージェント「あい」による自動投稿です。 OKWAVEのAIに対する取り組みについてはこちらをご確認ください。 https://staffblog.okwave.jp/2023/06/07/10415/

qhtsige
質問者

お礼

AIエージェントによるご提案ありがとうございます。 実施当たっては以下の点がわかりません。 ・取得したいURLが不明である。  確かにRSSを発行するのはEXCELで、宛先はMS2なるプロブラムに向けたローカルサーバなので、URLは存在しますが、VBAからでは、そのURLはわかりません。公開資料もないと思われます。 現時点では、取得情報の特定の内容から、取得完了の判断をするようにして、とりあえずは対処していますが、直接的な実行完了判断でないところが、面白くないことです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 読み込んだ文字列を関数として実行するには?(VC++)

    [やりたい事]  (1)テキストファイルを読込む    ※テキストには関数名が記述されてます。  (2)取得した関数を実行する。 [できない事]  (1)はできたのですが、(2)ができない。  取得した文字列をどうやれば関数として実行できるのか、分からず悩んでます。 回答よろしくお願いします。

  • 楽天RSS エクセルのマクロで10秒毎に記録したい

    楽天RSSで取得した数値をA1に表示しています。 その数値を、10秒ごとにB1にコピーして、古いデータは右にずらしていきたいのですが、 無限に溜まってしまっても困るので、過去100個までためて、それより古いデータは削除、 というマクロの記述方法を教えて下さい。

  • VBAでのwebservice関数の更新方法

    エクセルにてwebservice関数を使って、定期的に情報を更新したいと思っています。 VBAでESCを押すまで無限ループを回して、定期的(例えばsleepで5秒寝かせるなど)にwebservice関数を実行したいと思っています。 しかし、シートの再計算などをさせてもwebservice関数の内容が更新される気配がありません。 webservice関数をVBAからの指示で再実行させる方法があれば教えてください。

  • AccessVBA 実行している関数の名前を取得

    実行している関数の名前を取得したいと考えています。 具体的には、下の例の「命令群」で「ボタン_Click」という文字列を取得したいです。 例) Private Sub ボタン_Click() 命令群 End Sub こういったことが可能なのかどうかも含めて、教えてください。 宜しくお願いいたします。

  • RSS配信していないサイトのフィードを取得する方法は?

    WEBサイトにRSSボタンがないサイト(たとえば、NTTのサイトなどhttp://www.ntt-west.co.jp/news/) のフィードを取得する方法はないでしょうか。 http://○○○/▼▼.xmlなどの”URL”で取得したいです。 自分の情報収集のために、WEBページにお気に入RSS情報を表示 させる目的です。 ブラウザやソフトウェアのRSS機能ではなく、私のWEBページに 情報を羅列するサイトを構築しました(PHPで) RSS配信しているサイトは、URLがあるので問題なく表示できているのですが RSS配信していないサイトも表示させたいと考えています よろしくお願いします

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

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

  • EXCEL2007関数を実行させない方法

    EXCEL2007関数を実行させない方法 セルAにデータが入力されている場合、セルBに組み込まれている関数を実行しない。 というような制御は可能でしょうか。 シートAに入力されたキーワードをシートBのリストと照合して キーワードがシートB内に何件あるかをCOUNTで調べようと思っています。 一度何も考えずに実装してみたのですが、 この場合シートBのデータが膨大なものになると、 このブックを開くたびに照合が実行されて、莫大な時間がかかってしまっているようでした。 ですので、今回このような質問をさせていただきました。 アドバイスなどありましたら よろしくおねがいします!

  • 楽天RSS エクセル マクロVBA

    楽天RSSを使ってエクセル2007に日経225先物期近の10分足(9時~翌3時)を下記の様に(A列に10分足の時間、B列にその時間の値、D列に時刻と現在値)を表示させたいです。※D列は表示できています 。D2セルの現在値はリアルタイムで変わるので9時にスタートし、翌3:00まで10分足を表示させたいです。 ★【エクセル】★ 【A】 【B】 【C】 【D】 1 9:00 10030 9:17 ←現在時刻 2 9:10 10050 10080←現在値 3 9:20 10090 4 9:30 10120 5 9:40 10070 6 9:50 10040 7 10:00 10000 8 10:10 9970 ・ ・ 73 2:10 10080 74 2:20 10120 75 2:30 10150 76 2:40 10160 77 2:50 10190 78 3:00 10220 79 1週間ほど試行錯誤しましたが、分かりませんでした。 VBA マクロは初心者です。詳しい方よろしくお願いします。

  • VB.NETにて文字列で指定した関数の実行

    Visual Basic 2005におきまして 変数に文字列で指定したコード(関数)を実行する方法を探しております。 たとえば、下記のコードで、変数funcStringで指定した関数を実行して戻り値を得たいと思っております。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim funcString As String = "testFunc(3,5)" 'ここで上記funcStringで指定した関数を実行して戻り値を得たい。 End Sub 'テスト用の関数 Private Function testFunc(ByVal a As Integer, ByVal b As Integer) As Integer testFunc = a + b End Function Microsoft.JScript.Eval.JScriptEvaluateを利用して文字列をコードとして評価する方法を試しましたが、VBで定義してある関数を呼び出すことはできませんでした。 PHPやJavascriptでいうところのeval関数 PHPのcall_user_func関数 と同じようなことを実現したいと思っております。 いろいろ探してみたのですが、解決策が見つからず、 文字列を解析してSELECT CASEによる分岐で実行する関数を1つずつ振り分けるしか方法はないのかもと思っているのですが、今の開発仕様では100近くの関数に関してこの処理をSELECTで分岐することになりそうなのです。 なにとぞ、よき解決方法がありましたら、お力添えよろしくお願いいたします。

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

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