Попытка получить электронную таблицу с сайта ASP без каких-либо подсказок - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть сайт компании, который публикует большие отчеты, которые я разбираю и делю на то, что мне нужно. Я могу открыть веб-страницу и получить ссылку на нужную мне электронную таблицу, но затем я получаю одно всплывающее окно 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

Ответы [ 3 ]

1 голос
/ 27 февраля 2012

Вы не сможете подавить это сообщение в своем коде, это настройка на рабочей станции пользователя для предотвращения вреда от вредоносных файлов.

Пользователь должен будет либо отредактировать свой реестр Windows, либоконтролировать это с помощью параметра групповой политики.http://support.microsoft.com/kb/948615

Я столкнулся с той же проблемой с документами Excel, созданными на сервере.Единственный обходной путь, который я сделал, - это создание файлов с использованием Open XML SDK .

РЕДАКТИРОВАТЬ: Я прочитал ваш вопрос еще раз и заметил, что он больше сосредоточен на первом всплывающем окне.вверх, и связанный с JMax ответ ( Как отключить всплывающее окно загрузки файлов в Internet Explorer? ) должен исправить это.

0 голосов
/ 28 февраля 2012

Вы можете просто загрузить файл напрямую ...

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
            "URLDownloadToFileA" (ByVal pCaller As Long, _
             ByVal szURL As String, ByVal _
             szFileName As String, ByVal dwReserved As Long, _
             ByVal lpfnCB As Long) As Long

    Sub DownloadFile(sURL, sSaveAs)
    Dim rv As Long
        rv = URLDownloadToFile(0, sURL, sSaveAs, 0, 0)
        If rv <> 0 Then
            MsgBox "Error with download!"
        End If
    End Sub

Не знаю, будет ли здесь проблема с https.

Еще одна вещь, которую стоит попробовать:

Workbooks.Open "https://companysite.com/directorypage/Reports/MyReport.aspx?Format=Excel"

0 голосов
/ 27 февраля 2012

Джон, мои два цента на этом.

Если у вас есть административный доступ к вашему компьютеру, то, что предложит JMax, разберутся. Я не рекомендую редактировать реестр, если вы являетесь администратором до тех пор, пока вы не знаете, что делаете.

Если это, скажем, офисный компьютер, то редактирование реестра даже не вариант. Вам придется связаться с отделом информационных технологий. Они могут либо войти в систему на вашем компьютере в качестве администратора, а затем отключить эту опцию для вас, либо они могут настроить GP в соответствии с рекомендациями zeroef. Я думаю, что если это офисный компьютер, то они войдут в систему как администратор и внесут изменения для вас индивидуально, а не внесут изменения в GP (если вы не являетесь единственным членом этой группы). В корпоративной среде действительно сложно добиться этого через GP, поскольку это затрагивает множество пользователей. Также существует вероятность того, что ваш запрос может быть не согласован, если это офисный ПК.

Кстати, из того, что я вижу, ваш вопрос не имеет ничего общего с проблемой Excel:)

НТН

Sid

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...