コメント欄で話を進めてしまっていましたがこちらにまとめます。

寅さんのおっしゃってた、ログイン状態判定のためにマネパの取引画面にアクセスするところで止まってしまう、という問題。「作成している菜摘の環境では起こらない」「寅さんの環境でも通常通り成功することもある」ということから、コードよりもIEやサーバなどの個々の環境によって起こると判断しました。

症状としては、

・画面は表示されているように見えるのに、IEのタブ横のアイコン(eマーク)がぐるぐるし続けている
・マクロの実行エラーではなくずーっと待機の状態(IEがBusy)で、動かない

とのことでした。

これはマクロのエラーではないので、止まったり再実行することはありません。
ひとつの動作(IEのBusy解除を待つ)をやってる途中という認識です。
これは、そのうちBusyが解除されて、処理が進む可能性があります。

たとえそれが数時間後でも。

はたまた、なんらかの理由で、読み込みは終わっているのにIEがBusy状態のままってこともあり得ます。どちらにしても、いつまでも終わらない、または何十分も終わらないということだと注文ができません。困りましたね。

そこで寅さんに試して頂いたのは、

「IEの起動確認・取引画面へアクセス」の objIE.Navigate URL03 の下直下、Call IE_Wait を削除して Sleep(2000) を記述

IEのBusy解除を待つ(読み込み完了を待つ)のをやめて、単純に2秒だけ待つコードです。
これで、一応は解決されたようです。
今回はログイン判定用のアクセスだったので、画面の表示がすべて終わっていなくても次の処理に支障がないことからこういう方法をとりました。


そうそう、実は問題の個所を勘違いしていましたw

てっきりログイン後に会員画面から取引画面に遷移するところかと思っていたので、フレームの処理を変えればイケるかと思ってたんですが、それでは解決できないところでした。(ログイン済みじゃない場合に表示されるエラーページは同じフレームじゃないんで処理しようがないんです)
寅さんすみません。見当違いなこと言ってました。


で、一応応急処置で動作はできているようなんですけども、さらにお願いです。
次の対応を、試してみて欲しいのです。
マクロをダウンロードした、何も手を加えていない最初の状態から、これだけをやってみてください。

objIE.Navigate URL03 をやめて、objIE.Navigate URL02 にする。

 
URL03は取引画面のフレームを直接表示させようとするアドレスで、URL02はすでにログインしてる人のアカウントの取引画面を表示させるアドレスなので、似て非なるものです。
(ログインしてない時に出るセッションエラーのページもなんだか別のものですw)

これでも頻繁に止まるようならアクセスの仕方の違いではなさそうです。

反対に、これで解決するようなら、他のコードをいじる必要がないので今のところ最善策です。


ちなみに私の方は、もとのコードのまま、昨夜100件の注文を一気に出しまして、そのうち90件目でエラーが出ました。(普段より表示に時間がかかって注文の確認ボタンを押し損ねたエラー)
これは無視して再実行の流れで、最後まで注文が通せました。

たぶん、注文のコード自体には問題はないはずです。


もうこれでダメだったらちょっとすぐには思いつきません。
症状が出る方はSleepの調整でどうにかして頂くしかありません。

ダウンロード先の配布中ファイルは、私と同じ環境なら利用できるはずなので一応そのままにしておきます。コードのエラーでないなら下手に変更しない方がいいので。

だっていろいろ試したら私の環境でもエラー出まくるようになっちゃったんだもん


--------------------------------------------------------------------

にほんブログ村 為替ブログ 100通貨単位・1000通貨単位へ
にほんブログ村 為替ブログ 100通貨単位・1000通貨単位
ランキングに参加しています。気に入って頂けたらぜひクリックをお願いします。

--------------------------------------------------------------------