Проблема выросла из следующего. Была задача сохранения .pdf файла с сайта . При использовании способов через URLDownloadToFile или WinHttp.WinHttpRequest задачу решить не получилось. Файлы скачивались "битые". Просмотреть их на компе не удавалось.
Убрав все лишнее из вышеуказанных способов выяснилось, что для любых других URL файлы .pdf скачиваются и просматриваются на компе нормально, а вот с сайта нет. Также выяснил, что если открыть файл .pdf в IE, а потом сохранить его через окно сохранения (Сtrl+Shft+s), то все номально. Вот и возникла необходимость вот так через мягкое место сделать програмку.
Как я понял необходимо пользоваться FindWindowEx. В инете есть описания, но мозаику сложить не могу. Мозг уже кипит. Прошу помощь.
Необходимо с использованием VBA сделать следующее:
1. Открыть в IE .pdf файл по конкретной ссылке.
2. Открыть окно сохранения в IE.
3. В поле ввода "Имя файла" вставить конкретный путь и наименование файла "e:\111.pdf".
4. Программно нажать кнопку "Сохранить", чтобы окно закрылось.
| Код |
|---|
Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
(ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) _
As Long
Private Sub CommandButton1_Click()
Dim IE1 As InternetExplorer
Set IE1 = New InternetExplorer
IE1.Visible = True
apiShowWindow IE1.Hwnd, 3
IE1.navigate "http://kad.arbitr.ru/PdfDocument/4718462b-4ceb-408d-b92d-4fa111acec1b/0e6d3992-f771-4e09-9301-24e891...;
Do While (IE1.readyState <> 4) And (IE1.readyState <> 3): DoEvents: Loop
While IE1.document Is Nothing: DoEvents: Wend
Application.Wait (Now + TimeValue("0:00:5"))
SendKeys ("^+s")
MsgBox "Закипаю!!!!! АААААААААААААААААААААА!!!!!!"
End Sub |