ウィルスソフトで、IEからファイルのダウンロードが一発でできない。
未読分:12件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#12 2017年6月6日(火)16時28分 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分停止してから > > > > > > > > > リンクをクリック、 > > > > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > > > > 教えて頂けると幸いです。 |
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分停止してから > > > > > > > > > リンクをクリック、 > > > > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > > > > 教えて頂けると幸いです。 |
Message#10 2017年6月5日(月)19時52分 From: 困ってます君 | 返事 削除 変更 |
みらーのメッセージ(#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分停止してから > > > > > > > > リンクをクリック、 > > > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > > > 教えて頂けると幸いです。 |
Message#9 2017年6月5日(月)17時46分 From: みらー | 返事 削除 変更 |
困ってます君のメッセージ(#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分停止してから > > > > > > > リンクをクリック、 > > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > > 教えて頂けると幸いです。 |
Message#8 2017年6月5日(月)17時32分 From: みらー | 返事 削除 変更 |
困ってます君のメッセージ(#6)への返事 通常は、ページ(URL)が遷移したら、 documentは遷移先のものになるはずですが…。 以下は簡単なサンプルです。 Sub test() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://〇〇〇" '最初のページ For Each objtag In objIE.document.getElementsByTagName("a") If objtag.innertext Like "http*" Then objtag.Click 'リンクをクリック Exit For End If Next objtag '遷移待機 While objIE.readyState <> 4 Or objIE.Busy = True DoEvents Wend '遷移後のページ For Each objtag In objIE.document.getElementsByTagName("a") If objtag.innertext Like "http*" Then objtag.Click 'リンクをクリック Exit For End If Next objtag End Sub 最初のページと遷移後ページで同じ処理をしていますが、 objIE.documentはページ遷移した時点で入れ替わってるので、 objIEを毎度用意する必要はありません。 「リンクがなくエラーになる」のは、 ページ遷移が完了する前に、documentを探すコードが走ったりしていませんか? > このようにしたら遷移したドキュメントの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にする方法はありますか? > > > > 新しいオブジェクトを作成しなおしすればいいでしょうか? |
Message#7 2017年6月5日(月)17時08分 From: 困ってます君 | 返事 削除 変更 |
待機ができないのは、 ウイルススキャン中は、 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分停止してから > > > > > > リンクをクリック、 > > > > > > というような方法しかないでしょうか? > > > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > > 教えて頂けると幸いです。 |
Message#6 2017年6月5日(月)16時36分 From: 困ってます君 | 返事 削除 変更 |
このようにしたら遷移したドキュメントの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分停止してから > > > > > リンクをクリック、 > > > > > というような方法しかないでしょうか? > > > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > > 教えて頂けると幸いです。 |
Message#5 2017年6月5日(月)12時20分 From: こまってます君 | 返事 削除 変更 |
みらーのメッセージ(#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分停止してから > > > > リンクをクリック、 > > > > というような方法しかないでしょうか? > > > > > > > > 同じような経験された方がいらっしゃいましたら > > > > 教えて頂けると幸いです。 |
Message#4 2017年6月5日(月)09時19分 From: みらー | 返事 削除 変更 |
困ってます君のメッセージ(#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分停止してから > > > リンクをクリック、 > > > というような方法しかないでしょうか? > > > > > > 同じような経験された方がいらっしゃいましたら > > > 教えて頂けると幸いです。 |
Message#3 2017年6月4日(日)17時26分 From: 困ってます君 | 返事 削除 変更 |
みらーのメッセージ(#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分停止してから > > リンクをクリック、 > > というような方法しかないでしょうか? > > > > 同じような経験された方がいらっしゃいましたら > > 教えて頂けると幸いです。 |
Message#2 2017年6月3日(土)20時31分 From: みらー | 返事 削除 変更 |
困ってます君のメッセージ(#1)への返事 リンクというのは、サイト上に出てくるのでしょうか? それともダイアログでしょうか? 「1分経ったらクリック」する場合、 仮にスキャンに1分以上かかった場合はアウトですよね。 そのリンクが出てくるまで、ループで待機するのがベストだと思います。 それとsendkeysも確実性がないので、使うのはオススメしません。 > VBAでファイルの保存ボタンをおし、 > application.sendkeysで保存、まではできたのですが、 > > うちの会社ではウイルスチェックのソフトを使っており、 > (McAfee web gateway) > 一度、ある特定の場所に、ファイルが保存されて、 > そこでウイルススキャンが行われ、 > 問題なければ、 > 画面がかわり、ダウンロードのリンクが表示され、 > そこをもう一度、クリックしたら、 > やっとダウンロードできます。 > > 問題は、ウイルススキャンの時間が、 > ファイルのサイズによって違い、 > 画面が変更する時間も長かったりするので、 > エラーになってしまいます。 > > このような場合は、 > 例えばどのような場合でも1分停止してから > リンクをクリック、 > というような方法しかないでしょうか? > > 同じような経験された方がいらっしゃいましたら > 教えて頂けると幸いです。 |
Message#1 2017年6月2日(金)18時49分 From: 困ってます君 | 返事 削除 変更 |
VBAでファイルの保存ボタンをおし、 application.sendkeysで保存、まではできたのですが、 うちの会社ではウイルスチェックのソフトを使っており、 (McAfee web gateway) 一度、ある特定の場所に、ファイルが保存されて、 そこでウイルススキャンが行われ、 問題なければ、 画面がかわり、ダウンロードのリンクが表示され、 そこをもう一度、クリックしたら、 やっとダウンロードできます。 問題は、ウイルススキャンの時間が、 ファイルのサイズによって違い、 画面が変更する時間も長かったりするので、 エラーになってしまいます。 このような場合は、 例えばどのような場合でも1分停止してから リンクをクリック、 というような方法しかないでしょうか? 同じような経験された方がいらっしゃいましたら 教えて頂けると幸いです。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降