Используя Excel VBA, откройте веб-страницу, а затем сохраните ее.

Я пытаюсь написать макрос, который откроет заданный URL-адрес и выполнит Файл >> Сохранить как... URL-адрес возвращает вывод XML на экран, и я хочу его сохранить. Затем я могу заставить Excel открыть файл и работать с ним (эту часть я могу сделать).

Вот в основном то, что я хочу сделать, и это работает, за исключением бита «Сохранить как»:

Sub Main()
REM Reference to "Microsoft Internet Controls" is being used.
Dim objIE As InternetExplorer

Set objIE = New InternetExplorer

With objIE
    .Visible = True
    .navigate "http://exampleURL.comany.com/ServerOutput/XmlFile.xml"
    Do Until .readyState = 4
        DoEvents
    Loop

    REM The next line fails
    .SaveAs "C:\temp\test.xml"

    .Application.Quit
End With

Set objIE = Nothing
End Sub

Простое «Сохранить» подойдет, если это все, что сработает. Просто ищу способ сохранить вывод на экран. Спасибо!


person Air_Cooled_Nut    schedule 06.12.2013    source источник
comment
Вероятно, потому что objIE не имеет свойства SaveAs? Разве GETting XML невозможен?   -  person NullDev    schedule 06.12.2013


Ответы (1)


Может быть, что-то вроде этого может помочь?

Public Sub GetXML()

    Dim oXML As New MSXML2.XMLHTTP60
    Dim xURL As String

    'Retrieve XML.
    xURL = "http://exampleURL.comany.com/ServerOutput/XmlFile.xml"
    oXML.Open "GET", xURL, False
    oXML.send

    'Put into sheet.
    ThisWorkbook.Sheets("Sheet1").Range("A1").Value = oXML.responseXML.XML

End Sub

РЕДАКТИРОВАТЬ: убедитесь, что для этого включена ссылка на Microsoft XML, v3.0.

person NullDev    schedule 06.12.2013
comment
БК, спасибо. К сожалению, пользователь не сказал мне, что фактический URL-адрес не будет выполняться до тех пор, пока он не войдет в систему, что невозможно сделать со встроенными учетными данными :-( Извините за трату вашего времени, но спасибо за вашу помощь, я уверен Я смогу использовать это в другом месте. - person Air_Cooled_Nut; 06.12.2013
comment
Я протестировал локально сохраненный файл и использовал его. Однако ваш код не работал, oXML.responseText содержал текст файла, так что это хорошо. В любом случае, у меня есть другой способ чтения и разбора XML-файла, поэтому я буду использовать этот метод. - person Air_Cooled_Nut; 06.12.2013