• ベストアンサー

VBAでのwebservice関数の更新方法

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.5

> webservice関数が参照しているURLが格納されているセルを上書きは繰り返してみましたが、webservice関数で取得される値は更新されないようです。 となると、VBAの中で関数を実行してセルに代入してみてはいかがでしょう。 Range("A1").Value = WorksheetFunction.WebService("URL")

heth
質問者

お礼

ありがとうございます。 たしかに、それでも出来るかもしれないと思いました! ただ、先に下の方法で出来てしまったので、次に困ったときに使用させてもらいます。 先ほどは、webservice関数が参照するURLが格納されているセルを更新していたけど、再読み込みされなかった ↓ webservice関数が入っているセル自体をコピペすると再読み込みされた。 たとえば、 A1に「=WEBSERVICE("B1")」と入れていたなら、 B1を更新するのではなく、 A1をA2にコピーすると、A2に結果が返ってくる という感じです。 皆さんの回答助かりましたが、2回回答くれたkkkkmさんをベストアンサーにさせてもらいます。

その他の回答 (3)

  • Nobu-W
  • ベストアンサー率39% (725/1832)
回答No.4

https://ncode.syosetu.com/n5084ej/57/ こんな手法もあるみたいですが・・・応用できません?

heth
質問者

お礼

ありがとうございます。 その記事の最初の方を読んで、webservice関数が入ったセルをコピーしてみたら?と思ってやってみたら、できました。

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.3

URLを記載しているセルを上書きしてみればいかがですか。

heth
質問者

お礼

ありがとうございます。 webservice関数が参照しているURLが格納されているセルを上書きは繰り返してみましたが、webservice関数で取得される値は更新されないようです。

回答No.2

それっぽいのを見つけたので紹介だけだが、解決策は、 > 特定のキーを押下したら、マクロを起動させる https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1330678118 と、 > VBAで一定間隔での繰り返し処置を実装 https://tech-draft.net/programming/vba-ontimer/ を改造・組み合わせだろうね。

heth
質問者

お礼

ありがとうございます。 繰り返しループを作る目的では、「onTimeメソッド」は、無限ループよりも良さそうでした。 ただ、キー押下でマクロ軌道じゃなくて、四角い図形にマクロ登録してボタン化しているので、起動はこちらを使おうと思います。 一番の問題は、ループの中で、webservice関数から戻ってくる値が更新されないことです。

関連するQ&A

専門家に質問してみよう