У меня есть сайт компании, который публикует большие отчеты, которые я разбираю и делю на то, что мне нужно. Я могу открыть веб-страницу и получить ссылку на нужную мне электронную таблицу, но затем я получаю одно всплывающее окно IE для открытия / сохранения / отмены и, когда я нажимаю, чтобы открыть электронную таблицу, я получаю второе всплывающее окно ( этот из Excel), в котором говорится, что электронная таблица имеет формат, отличный от указанного в расширении. «Я понятия не имею, как, если возможно, убрать первое всплывающее окно; единственный известный мне способ, как обычно предотвращать всплывающее окно ups with excel с DisplayAlerts = False, но добавление, которое, кажется, не имеет никакого эффекта. Код для запуска этого проекта автоматизации следующий:
[РЕДАКТИРОВАТЬ] Я отредактировал и заменил исходную кодировку, чтобы отразить самую последнюю попытку этого. Мне удалось преодолеть первое всплывающее окно загрузки файлов (хотя и с использованием sendkeys), и сейчас я работаю над тем, чтобы позаботиться о втором всплывающем окне (что, я полагаю, является вопросом переноса фокуса обратно на excel). Любые предложения по замене части sendkeys, безусловно, приветствуются, а также советы по возвращению внимания в excel, чтобы я мог использовать Excel для управления вторым всплывающим окном (если это лучший способ сделать это). Обновленный код следует:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Sub Automation()
Dim IeApp As Object
Dim IeDoc As Object
Dim URL, URL2 As String
Application.DisplayAlerts = False
URL = "https://companysite.com/directorypage/default.aspx"
URL2 = "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel"
Set IeApp = CreateObject("InternetExplorer.Application")
IeApp.Visible = True
IeApp.Navigate URL
While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend
IeApp.Document.All.Item("MainContent_btnAuthenticate").Click
While IeApp.Busy Or IeApp.ReadyState <> 4: DoEvents: Wend
Set IeApp = CreateObject("InternetExplorer.Application")
IeApp.Visible = False
IeApp.Navigate URL2
Do Until thewindow <> 0 'wait for the "File Download" popup window to appear
thewindow = FindWindow(vbNullString, "File Download")
Loop
SendKeys "{LEFT}"
Application.Wait Now + TimeValue("00:00:01")
SendKeys "{LEFT}"
Application.Wait Now + TimeValue("00:00:01")
SendKeys "{ENTER}"
End Sub