- ベストアンサー
VBAでのwebservice関数の更新方法
エクセルにてwebservice関数を使って、定期的に情報を更新したいと思っています。 VBAでESCを押すまで無限ループを回して、定期的(例えばsleepで5秒寝かせるなど)にwebservice関数を実行したいと思っています。 しかし、シートの再計算などをさせてもwebservice関数の内容が更新される気配がありません。 webservice関数をVBAからの指示で再実行させる方法があれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> webservice関数が参照しているURLが格納されているセルを上書きは繰り返してみましたが、webservice関数で取得される値は更新されないようです。 となると、VBAの中で関数を実行してセルに代入してみてはいかがでしょう。 Range("A1").Value = WorksheetFunction.WebService("URL")
その他の回答 (3)
- Nobu-W
- ベストアンサー率39% (725/1832)
https://ncode.syosetu.com/n5084ej/57/ こんな手法もあるみたいですが・・・応用できません?
お礼
ありがとうございます。 その記事の最初の方を読んで、webservice関数が入ったセルをコピーしてみたら?と思ってやってみたら、できました。
- kkkkkm
- ベストアンサー率66% (1719/2589)
URLを記載しているセルを上書きしてみればいかがですか。
お礼
ありがとうございます。 webservice関数が参照しているURLが格納されているセルを上書きは繰り返してみましたが、webservice関数で取得される値は更新されないようです。
- m5048172715
- ベストアンサー率16% (860/5261)
それっぽいのを見つけたので紹介だけだが、解決策は、 > 特定のキーを押下したら、マクロを起動させる https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1330678118 と、 > VBAで一定間隔での繰り返し処置を実装 https://tech-draft.net/programming/vba-ontimer/ を改造・組み合わせだろうね。
お礼
ありがとうございます。 繰り返しループを作る目的では、「onTimeメソッド」は、無限ループよりも良さそうでした。 ただ、キー押下でマクロ軌道じゃなくて、四角い図形にマクロ登録してボタン化しているので、起動はこちらを使おうと思います。 一番の問題は、ループの中で、webservice関数から戻ってくる値が更新されないことです。
お礼
ありがとうございます。 たしかに、それでも出来るかもしれないと思いました! ただ、先に下の方法で出来てしまったので、次に困ったときに使用させてもらいます。 先ほどは、webservice関数が参照するURLが格納されているセルを更新していたけど、再読み込みされなかった ↓ webservice関数が入っているセル自体をコピペすると再読み込みされた。 たとえば、 A1に「=WEBSERVICE("B1")」と入れていたなら、 B1を更新するのではなく、 A1をA2にコピーすると、A2に結果が返ってくる という感じです。 皆さんの回答助かりましたが、2回回答くれたkkkkmさんをベストアンサーにさせてもらいます。