【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
vb.net me.refresh
投稿日時: 24/11/29 22:49:05
投稿者: baggio1824
メールを送信

お世話になります。
vb.net のvb2017で開発している者です。
 
htpで取得したデータをloop処理でスプレッドに表示しながら、labelに取得した件数を1件ずつカウントアップし表示しています。
最初は順調にカウントアップし、label表示していますが、途中で他のEXCElやoutlookを見たりして、vb.netの画面に戻ると画面左上に「応答なし」が出てカウントが止まったままです。
 
loopの途中に Apleication.Doeventsとlabel.updateのコードを入れても現象は同じです。
思い切って me.Refresh をloopの途中に入れたいのですが、htp処理が止まりそうで怖いです。
 
何が手だてがないでしょうか? ご教示ください。

回答
投稿日時: 24/12/01 12:08:14
投稿者: Suzu

『htp』とは、http  つまり WEB上から情報を取得 しているという意で良いでしょうか?
 

引用:
思い切って me.Refresh をloopの途中に入れたいのですが、htp処理が止まりそうで怖いです。
現在はテスト段階ではないのでしょうか?
状況を確認するのに、テストを行っているのですから、止まる事を恐れずにテストを行えば良いでしょう。
 
 
そもそも、
引用:
途中で他のEXCElやoutlookを見たりして、vb.netの画面に戻ると画面左上に「応答なし」が出てカウントが止まったままです

処理に時間を要しており、「応答なし」になってしまう。
 
何に時間を要しているのでしょうか?
WEB上のデータを取得するのに時間を要しているのでしょうか?
 
 例えば、スクレイピングの中で、
  1ページ目 表示 → 1ページ目 データ取得・VBデータ転記 → 2ページ目への移動命令
  2ページ目 表示 → 2ページ目 データ取得・VBデータ転記 → 3ページ目への移動命令
    :
 の様に、データ取得 の間で、WEB上のページ移動 → WEB 読み込み 動作が入る
 
 または、単に通信速度が遅い
 
 
或いは、
 単に、スプレッドシートのデータ件数が多く
 スプレッドシートへの 転記&表示 に時間を要しているのでしょうか?
 
 
前者であれば、
・スクレイピングではなく、CSV等で取得できるのであればそちらを使う
・スクレイピングでデータを取得、→ 次ページを取得 → ・・・ → 全ページ取得後、
  スプレッドシートへの表示
 
後者であれば、
スプレッドシートの表示方法を見直す。
・スクレイピングにて取得したデータを都度スプレッドシートへ表示するのではなく
 データ取得し、配列へ代入、データ取得後 配列からスプレッドシートへ転記
  或いは、レコードセットや、CSVへ代入してしまう方法もあるでしょう。
 
 
何にしても、どの処理に時間を要しているのかについて、原因を明らかにし、
それについての対策を採るようにしましょう。

投稿日時: 24/12/01 16:53:53
投稿者: baggio1824
メールを送信

ご回答ありがとうございます。
テスト環境ではWEBデータ取得(htp)が行えないので、既に本番環境で実行しています。
 
件数が多く(900件くらい)おそらく回線が遅いので、WEB上のデータ取得に時間がかかっているのだと
思います。
データ取得結果を配列にセーブし、配列から画面表示する方向で検討しようと思います。
 
大変助かりました。