ウィルスソフトで、IEからファイルのダウンロードが一発でできない。 削除
Message#11 2017年6月6日(火)16時00分 From: 困ってます君 |
みらーさん ありがとうございました。 できました。 このようにしたらリンクができるまで待機できました。 While Left(objIE.Document.getElementsByTagName("td")(2).innerText, 7) = "ダウンロード中" DoEvents Wend またおっしゃるとおり、 APPLICATION.WAITを使ったら、 ieオブジェクトはそのままで大丈夫でした。 本当にありがとうございました! > みらーのメッセージ(#9)への返事 > > ありがとうございます。 > > すでにページが遷移した後で、 > (readystateはすでに4になっている) > 画面が30%完了、50&完了、100パーセント完了というふうに表示されていき、 > 完了したら、ダウンロードのリンクが現れます。 > > DOCUMENTでもREADYSTATEやってみましたが、 > COMPLETEで、だめでした。 > > ファイルの大きさによって、100%完了になる時間がちがうのですが、 > 最大3分待つようにすればいいかもしれません。 > > また、100パーセント完了になったら、 > CLICK HERE という文字列が現れるので、 > > While Not InStr(objie2.Document.getElementsByClassName("datatable").innerText, "Click") > 0 > DoEvents > Wend > > という風にして、 > その文字列がない間だけ、待機、というふうにはできないでしょうか? > > > > > 困ってます君のメッセージ(#7)への返事 > > > > スキャン中というのは、すでにページが遷移したあとで、 > > 同じページ内にリンクが出てくる、という認識で合ってますでしょうか? > > > > スキャン中、READYSTATEが使えないのであれば、 > > APIのSLEEPで任意の秒数待機したあとで、 > > <a>タグを探す、というのはどうでしょう? > > > > > 待機ができないのは、 > > > ウイルススキャン中は、 > > > READYSTATEは4になっていました。 > > > もしリンクがなければ、待機しつづける、 > > > というコードにすればいいのでしょうか? > > > > > > Debug.Print objIE2.ReadyState > > > Debug.Print objIE2.Busy > > > > > > 4 > > > False > > > > > > > > > > このようにしたら遷移したドキュメントのURLを取得できました。 > > > > > > > > Dim objShell, objIE2 As Object > > > > Set objShell = CreateObject("Shell.Application") > > > > Set objIE2 = objShell.Windows(objShell.Windows.Count - 1) > > > > > > > > ソースはここでした。 > > > > https://teratail.com/questions/9052 > > > > > > > > > みらーのメッセージ(#4)への返事 > > > > > > > > > > ありがとうございます。 > > > > > > > > > > ページが遷移しても、 > > > > > 最初のie.documentのオブジェクトは変更していないので、 > > > > > ie.document.urlは前のアドレスのままで、 > > > > > リンクがなくエラーとなってしまいます。 > > > > > > > > > > 遷移した、今開いている新しいページを > > > > > ie.documentにする方法はありますか? > > > > > > > > > > 新しいオブジェクトを作成しなおしすればいいでしょうか? > > > > > > > > > > > 困ってます君のメッセージ(#3)への返事 > > > > > > > > > > > > ページ上にリンクが出てくるのであれば、 > > > > > > ページが遷移したあとに、innertextが"http*"で始まる<a>タグをループで探せば大丈夫ではないでしょうか。 > > > > > > > > > > > > For Each obj In IE.document.getElementsByTagName("a") > > > > > > If obj.innertext Like "http*" Then > > > > > > obj.Click > > > > > > End If > > > > > > Next obj > > > > > > > > > > > > > みらーのメッセージ(#2)への返事 > > > > > > > > > > > > > > ありがとうございます!! > > > > > > > > > > > > > > リンクは、サイト上のページにでてきます。 > > > > > > > サイトのURLが変更になり、ループで待機ができない感じです。 > > > > > > > > > > > > > > このようなページに変更します。 > > > > > > > > > > > > > > https://kc.mcafee.com/corporate/index?page=content&id=KB80729&viewlocale=ja_JP&locale=de_DE > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 困ってます君のメッセージ(#1)への返事 > > > > > > > > > > > > > > > > リンクというのは、サイト上に出てくるのでしょうか? > > > > > > > > それともダイアログでしょうか? > > > > > > > > > > > > > > > > 「1分経ったらクリック」する場合、 > > > > > > > > 仮にスキャンに1分以上かかった場合はアウトですよね。 > > > > > > > > > > > > > > > > そのリンクが出てくるまで、ループで待機するのがベストだと思います。 > > > > > > > > それとsendkeysも確実性がないので、使うのはオススメしません。 > > > > > > > > > > > > > > > > > > > > > > > > > VBAでファイルの保存ボタンをおし、 > > > > > > > > > application.sendkeysで保存、まではできたのですが、 > > > > > > > > > > > > > > > > > > うちの会社ではウイルスチェックのソフトを使っており、 > > > > > > > > > (McAfee web gateway) > > > > > > > > > 一度、ある特定の場所に、ファイルが保存されて、 > > > > > > > > > そこでウイルススキャンが行われ、 > > > > > > > > > 問題なければ、 > > > > > > > > > 画面がかわり、ダウンロードのリンクが表示され、 > > > > > > > > > そこをもう一度、クリックしたら、 > > > > > > > > > やっとダウンロードできます。 > > > > > > > > > > > > > > > > > > 問題は、ウイルススキャンの時間が、 > > > > > > > > > ファイルのサイズによって違い、 > > > > > > > > > 画面が変更する時間も長かったりするので、 > > > > > > > > > エラーになってしまいます。 > > > > > > > > > > > > > > > > > > このような場合は、 > > > > > > > > > 例えばどのような場合でも1分停止してから > > > > > > > > > リンクをクリック、 > > > > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > > > > 教えて頂けると幸いです。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。