とみ
岡三RSSフリーズについて
初めて投稿いたします。よろしくお願いいたします。
昨年の春までは、Worksheet_Calculateを使ったデータ取得VBAが問題なく動作していましたが、今年になった再度動作させると途中でとまってしまいます。
色々と調べてみますと、岡三RSS集いの広場に以下の記事がありました。
■岡三RSSがフリーズした事がある方に質問です https://bbs.okasan-online.co.jp/ont/rss/board/?topic_id=258&page=1#comment_1380
確かに、岡三RSSがフリーズしているようで、Shell関数を使ってRSSを停止して再起動すると無事に動くことは確認できました。しかし停止間隔が早くなり数分間隔でフリーズを繰り返す状況になります。そのような状況でApplication.OnTimeでRSSの停止起動のトリガをかけると、起動停止が繰り返されてしまいタイミングが狂うと岡三RSSがたくさん起動されることになりました。そこでApplication.OnTimeの解除をおこなうFalseも使いまして、比較的安定に動作させることができますが、それでも一日に数回はエクセルがフリーズする状況が発生しています。これは、おそらく岡三RSSの起動停止のタイミングに関係しているかと疑っていますが、実証できていません。このようにRSSの起動停止を繰り返すこと自体がやはり不自然だと思います。
そもそも昨年の春には岡三RSSは正常に動いていたのですが、1年後にフリーズが頻発する事態は異常です。この現象はネットではいくつか見られますので私だけの問題でもVBAの問題でもないように思います。何か本質的な問題があるように思います。別の記事では、昨年8月のwindows10アップデートが影響しているとの記載もありました。ただ、これに対してどうすればフリーズを解消できるかはわかりませんでした。
そこで質問ですが、
(1)岡三RSSがフリーズする原因について、調査してこの原因を排除する対策を取りたいと思うのですが、何かよいヒントや方法をお教えいただけないでしょうか?
(2)岡三RSSの起動停止でなく、起動したままで、例えばメモリリセットなどの初期化ができる方法はないでしょうか?つまり、複数起動等の問題がないリセット方法があれば対症療法でも比較的安定に動かすことができると思います。
以上よろしくご教授頂きたくお願い致します。
2021年03月17日
大野 了
とみさん、こんにちは!!
Doevents自体はApplication.EnableEventsの動作には影響を与えないので大丈夫と思います。
※Application.EnableEvents = False が解除されたりしない。
とはいえ、VBAでDoEventsとOn timeを組み合わせる状態で、
DoEventsが動いてる時と同タイミングで
セルが入力状態になったりすると、On timeが動かなくなったりします。
この時はフリーズはしませんが、VBAが繰り返し実行されなくなります!!
>これでうまくいかないようでしたらよろしくお願いいたします。
了解しました!
もしよければ、VBAが停止する最小限度のソースに削ってもらえると、
調べるのは早いのでありがたいです!!
2021年03月28日
とみ
大野様
お世話になっております。
色々と検討しましたが、うまくいきません。コードを単純化したものをお送りしますがよろしくご確認願います。
ーーーーーーーーーーー
ここから、以下の文を書いて添付ファイルで送ろうとしましたが、7MB程度のファイルでエラーとなり送れませんでした。
「メッセンジャーで直接ファイル」を大野様宛てにファイルを送る方法をお教えいただけませんか? よくわからず申し訳ありません。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
お送りするエクセルファイルは以下の基本的な機能を持つものです。
①銘柄情報ワークシートのC3~I12に=QUOTE($B3,"東証",C$2)などを貼り付けている。
②銘柄情報のC~I列のデータで対応する銘柄の行のデータを各銘柄シータ(1~10)のC4~I4にコピーしている。
③各銘柄のワークシートが変化すると各シートのWorksheet_Calculateを呼び出す。
④SUB Worksheet_Calculateは頂いたエラーハンドラ付きのコードでSub Data_Gettingを呼び出す。ここで引数はワークシート名の1~10の値です。
⑤Sub Data_Gettingでは各銘柄のワークシートの株データの値を改行して時系列のデータとして記録する機能を持っています。銘柄ワークシートのA4セルには=COUNT(E6:E10000)が貼り付けてあり株価データの行数を表示いるのでこれを使っています。また、On Timeを使って一定時間このSub Data_Gettingが呼び出されない場合は停止、再起動をするように設定している。
⑥Sub Initializeはデータの消去と初期化をおこなうものです。データがたまりすぎたら実行すると良いと思います。
以上ですが、基本的には数分でフリーズしてしまい停止再起動もされません。手動で岡三RSSを終了させて再起動するとまた動きますのでエクセルはフリーズしていません。以上より、以下につきまして解決のヒントを頂けると幸いです。
①そもそもなぜフリーズするかの原因がわかりません。繰り返しWorksheet_Calculateが呼び出されていないと思いますが…
②On Timeによる停止、再起動が動作しない原因も分かりません。本来はフリーズすることがない場合は不要かもしれませんがプログラムとして納得がいかないのです。
Application.OnTime SchTime, " Flag_check", , False
でOn Timeの動作を終了させているのですが、これが悪さをしているようです。この行を省くと起動停止が多く発生してフリーズします。以上お忙しい中恐縮ですがよろしくお願いいたします。
2021年03月29日
大野 了
とみさん
Excelで7Mですが・・・
だいぶ大きいですね・・・
多分ですが、拡張子がxlsmになっているのでエラーになるのだと思われます!!
拡張子をいったんxlsxに変えて頂きアップロードして頂けますでしょうかー
その後、こちらでxlsmに変えます!!
メッセンジャーで送られたい場合は、
Facebookで『大野 了』 で検索して頂き、このアイコンと同じアイコンの人(笑
にメッセージで送ってください!!
Application.OnTime SchTime, " Flag_check", , False
を外すと、フリーズするとのことなので、
OnTimeがバッティングしてるのだと思います。
Application.OnTime SchTime, " Flag_check", , False
は OnTime を止めるという事ですので、
これを省く、イコール、OnTimeが停止しない
という事ですので、OnTime自体が悪いのだと思われます。
2021年03月29日
とみ
大野様
容量オーバーとのメッセージももらっていますが、一応xlsxに変えて送ります。なお、もともとはOn Timeがない場合でもフリーズしていますのでこの点でもご確認いただけれと幸いです。
よろしくお願いいたします。
やはり「ファイルサイズが超過しています」のメッセージをもらいました。メッセンジャーでトライしてみます。
2021年03月29日
大野 了
とみさん、こんばんは!!
集いの広場の掲示板には容量オーバーのエラーなんてあったんですね・・・
すみません、まったく知りませんでした。
勉強になりました、ありがとうございました!!
メッセンジャーで待ってます(笑
2021年03月29日
Yoichi Muratomi
大野様
慣れなくてすみません。メッセンジャーで入れたと思うのですが如何でしょうか?ファイルの添付というメニューがわからず画像・写真の添付のところに無理やりエクセルファイルを入れましたが、おかしなことになっていますか?
2021年03月30日
とみ
大野様
上の差出人は私です。Facebookの名前です。これでメッセージが行っている可能性があります。
ZIPファイルでも送ってみましたが、形式エラー、容量エラーがでました。Zipでは容量が2.5MBでしたが駄目ですね。
2021年03月30日
大野 了
とみさん、こんにちは!!
Excelですがメッセンジャにて届きました!!
ありがとうございます。
見てみます!!
また、一点ですが、Excelファイルが大きくなりすぎている件ですが、
原因としては、
不要と思われるデータが遠くのセルに入っており、
そこまでをSheetの領域とみてしまい大きくなってしまっているようです
例)
・シート1の AH~AQ列に文字列が入っている
AD59ぐらいに使用していないだろうと思い割れる線が入っている
・シート2のDD189 に数字が入っている
このようなデータが各シートに入っているため、
Sheetの領域が使わないのに大きくなりなりすぎてしまい
サイズが大きくなっているようです。
もし、A列からI列までしか使用しないのであれば、一度、ファイルを作り直されることをお勧めします!!
2021年03月30日
大野 了
とみさん、こんにちは!!
シートから無駄なデータを削って、
必要最小限度にしたファイルで、
1時間ほど動かしてるんですが、RSSは止まらずに動いています。
VBA等は触っていないため、もしかすると肥大化したExcelが問題だったのかと思われます。
必要最小限度に絞った、Excelファイルをメッセンジャーで送り返しますので、
ご確認頂けますと幸いです!!
これで直ることを祈って!!
2021年03月30日
とみ
大野様
ありがとうございます。
無事に届いてよかったです。
今回シートを作り直したつもりでしたが、一部コピーして作ったので消し忘れがあったのかもしれませんね。
ありがとうございました。最初から作るようにします。
なお、以前QUATEのみでマクロを動かさない場合はフリースしないと報告しましたが、WorkSHEET_calcuate、On timeを使わずに、Sleepで一定の時間間隔でデータを取り続けるプログラムを作りましたが、これでもフリーズするようです。
何か環境設定にも問題があるかもしれませんね。
まずはよろしくお願いいたします。
2021年03月30日