2017-09-19 1 views
1

電子メールは、ドキュメントへのリンク、またはより正確には、ドキュメントをダウンロードするためにクリックするボタンを含むウェブページへのリンクを受け取ります。私はOffice 2016、IE 11、およびWindows 7 Enterpriseの下でこれを自動化したいと思います。私はこれまでこれを得た。 VBAでVBA/IE過去のファイル保存プロンプトを取得する方法は?

screen shot with download button and IE prompt

、私はマイクロソフトHTMLオブジェクトとインターネットコントロールライブラリへの参照を設定します。私は、ページをロードし、ページ上のボタンコントロールを見つけて、ボタンのクリックメソッドを発行します。それでは、上記のプロンプトが表示されます。私は...として保存したい、つまり、ダウンロードされた各ファイルは特定のディレクトリに保存されます。あなたはどうしますか?

EDIT:ファイルのURLがWebページのソースに含まれていません。 [ダウンロード]ボタンのコードはこれです:

<form action="/Home/NoCaptcha" method="post"> 
    <input type="submit" class="btn btn-primary btn-lg" value="Download" style="margin-top: 40px;" /> 
</form> 

プロンプトがWebページの一部ではないので、私はボタンを見つけるためにHTMLを使用することはできません。私はSendKeys(理想的ではない)を使うことができましたが、それでも私はAlt-Sを保存するだけでした。下の矢印を仮想的にクリックして名前を付けて保存オプションを公開する方法はありますか?しかし、私がこれを行うと、どのようにファイルの場所を入力するのですか?どういうわけか実際の名前を付けて保存ダイアログボックスを制御する必要がありますか?

SendKeysを使用してAlt-Sを送信すると仮定すると、その直前にデフォルトのダウンロード場所を保持するレジストリキーを変更できます。しかし、これはレジストリに一日に何百回も書くことを必要とするでしょう。これには影響がありますか?レジストリが破損する危険がありますか?

EDIT: 私はIEが自動的にファイルをダウンロードした場合、それは私の問題は、あまりにも さらなる研究は、あなたがのURLを持っているので、プロンプトを表示せずにダウンロードするオプションがIE 10

+0

ボタンのクリック方法にはファイルへのリンクが含まれていますか? – jsotola

+0

ありがとうございます。それはしません。私はこれを反映するために私の質問を更新しました。 – RobertSF

+1

ウェブページには、ここに手動で入力できる識別可能なデータが含まれていますか? ... https://eservices.truecertify.com ....またはここに送られましたか? ... https://eservices.truecertify.com/Home/NoCaptcha – jsotola

答えて

1

ので、削除されたことを暴く解決するだろうと仮定あなたがファイルを取得するために必要なものすべてを持っているページです。ポストの一部には元のURLに含まれていないようなバージョンのパラメータがあります。したがって、DocumentLocator IDとPublicKeyを取得するダウンロードボタンのURLを簡単に解析してください。また、すべての情報、DocLocID、バージョン、およびキーを持つHTMLを解析することもできます。

これは、あなたが最終URL文字列

https://eservices.truecertify.com/Home/NoCaptcha?BypassCaptcha=True&DocumentLocator=1DC-IAJJJ4-AE58564C&PublicKey=Asbg&VersionNumber=Version+3.0.0.3

<form action="/Home/NoCaptcha" method="post"> 
    <input type="submit" class="btn btn-primary btn-lg" value="Download" style="margin-top: 40px;"> 
    <input data-val="true" data-val-required="The BypassCaptcha field is required." id="BypassCaptcha" name="BypassCaptcha" type="hidden" value="True"> 
    <input data-val="true" data-val-required="The DocumentLocator field is required." id="DocumentLocator" name="DocumentLocator" type="hidden" value="1DC-IAJJJ4-AE58564C"> 
    <input data-val="true" data-val-required="The PublicKey field is required." id="PublicKey" name="PublicKey" type="hidden" value="Asbg"> 
    <input id="VersionNumber" name="VersionNumber" type="hidden" value="Version 3.0.0.3"> 
</form> 

を組み立てるためのデータを取得する場所これはhttps://eservices.truecertify.com/?loc=1DC-IAJJJ4-AE58564C&key=Asbg

でフォームのHTMLソースです。

Sub TestMe() 
'URL of download button 
'https://eservices.truecertify.com/?loc=1DC-IAJJJ4-AE58564C&key=Asbg 
'within the loc is the document locator ID, the key is the public key, and you will need to check to see if the version changes 
'the Posted URL 
'BypassCaptcha=True&DocumentLocator=1DC-IAJJJ4-AE58564C&PublicKey=Asbg&VersionNumber=Version+3.0.0.3 
Dim sURL As String 
sURL = "https://eservices.truecertify.com/Home/NoCaptcha?BypassCaptcha=True&DocumentLocator=1DC-IAJJJ4-AE58564C&PublicKey=Asbg&VersionNumber=Version+3.0.0.3" 

SavePDFFile sURL 
End Sub 

Sub SavePDFFile(myURL As String) 
Dim savePath As String 
Dim WinHttpReq As Object 
savePath = "C:\" 
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP") 
'I used get instead of post 
WinHttpReq.Open "GET", myURL, False 
WinHttpReq.send 

    If WinHttpReq.Status = 200 Then 
     Set oStream = CreateObject("ADODB.Stream") 
     oStream.Open 
     oStream.Type = 1 
     oStream.Write WinHttpReq.responseBody 
     oStream.SaveToFile (savePath & "MyFile.pdf") 
     oStream.Close 
    End If 

End Sub 
+0

うわー、私は、実際のファイルURLのビットと部分がフォーム自体の隠しフィールドにあることは知らなかった。私はフォームが投稿すると考えて、バックエンドのコードは、どのファイルをブラウザにプッシュするかを理解するでしょう。 – RobertSF

関連する問題