2014-10-15 3 views
0

Я хочу заполнить таблицу excel из данных на веб-странице. Как я могу это сделать?Заполнить таблицу excel с веб-страницы

В моем плане до сих пор используется WinHttpRequest в Excel-VBA. Я просто получаю ошибки тайм-аута :(

Sub webtest() 
    Dim request As WinHttpRequest 
    Set request = New WinHttpRequest 

    request.SetTimeouts 2000, 2000, 2000, 2000 
    request.Open "GET", "http://www.w3schools.com/html/html_tables.asp", False 
    request.Send 

    MsgBox request.ResponseBody 
End Sub 

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

+0

Почему бы не использовать функцию веб-запроса Excel напрямую? Не нужно использовать VBA таким образом. – Dai

+0

Ухоженный, не знал об этом. У меня возникли проблемы с поиском ресурсов на нем, знаете ли вы, может ли он использоваться через VBA? – Alter

ответ

1

Alt + D, D, W позволит вам сделать это без кода.


URL-адрес должен быть 100% правильно. в отличие от браузера нет кода для исправления URL-адресов.

Цель моей программы - получить сведения об ошибке.

Как получить правильный URL-адрес, введите свой URL-адрес в браузере, перейдите, и правильный URL-адрес часто находится в адресной строке. Другой способ - использовать свойства ссылки и т. Д., Чтобы получить URL-адрес.

Также Microsoft.XMLHTTP сопоставляется с Microsoft.XMLHTTP.1.0. HKEY_CLASSES_ROOT \ Msxml2.XMLHTTP сопоставляется с Msxml2.XMLHTTP.3.0. Попробуйте более поздний вариант

Попробуйте этот способ, используя xmlhttp. Отредактируйте URL-адрес и т. Д. Если кажется, что нужно прокомментировать if/end, если вы хотите сбрасывать информацию, даже если она работает. Это vbscript, но vbscript работает в vb6.

On Error Resume Next 
Set File = WScript.CreateObject("Microsoft.XMLHTTP") 
File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False 
'This is IE 8 headers 
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)" 
File.Send 
If err.number <> 0 then 
    line ="" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error getting file" 
    Line = Line & vbcrlf & "==================" 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description 
    Line = Line & vbcrlf & "Source " & err.source 
    Line = Line & vbcrlf & "" 
    Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText 
    Line = Line & vbcrlf & File.getAllResponseHeaders 
    wscript.echo Line 
    Err.clear 
    wscript.quit 
End If 

On Error Goto 0 

Set BS = CreateObject("ADODB.Stream") 
BS.type = 1 
BS.open 
BS.Write File.ResponseBody 
BS.SaveToFile "c:\users\test.txt", 2 

Также проверьте, работают ли эти другие объекты.

C:\Users>reg query hkcr /f xmlhttp 

HKEY_CLASSES_ROOT\Microsoft.XMLHTTP 
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0 
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0 
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0 
End of search: 12 match(es) found. 

быть также известно, есть предел того, сколько раз вы можете вызвать любой конкретный объект XMLHTTP до возникновения блокировки. Если это произойдет, и это происходит при отладке кода, просто переключиться на другой объект XmlHttp

EDIT

Это то, что говорит помощь.

Что нового в MSXML 6.0 MSXML 6.0 поставляется с SQL Server 2005. Он также поставляется в виде веб-версии. Ниже приведен краткий обзор функций, которые были представлены в MSXML 6.0.

безопасности

ряд усовершенствований, которые были сделаны MSXML 6.0 для устранения угроз безопасности. Кроме того, по умолчанию отключены некоторые функции, которые небезопасны, например DTD и встроенные схемы. Дополнительные сведения см. В разделе Обзор безопасности MSXML.

схема XDR Поддержка Удалены

XML-данных уменьшенного (XDR) поддержка схемы была удалена. Дополнительные сведения см. В разделе «Удаление поддержки схемы XDR».

Улучшения в XSD Соответствие стандартам

MSXML 6.0 улучшила соответствие стандартам XSD схемы. Для получения дополнительной информации см. Усовершенствования в соответствии со стандартами XSD.

Улучшения в Schema Cache поведения

MSXML 6.0 изменилось поведение кэша XSD схемы. Новая версия менее неоднозначна, когда возникают столкновения имен. Дополнительные сведения см. В разделе «Улучшения поведения кэша схемы».

XML Цифровая подпись Удалены

MSXML 6.0 удалена поддержка для цифровой подписи XML. Для получения дополнительной информации см. XML Digital Signatures.


Edit 2

Порты определяются сдачи: в конце URL. например; http://www.microsoft.com:80


Редактировать 3

Использование Macro Recorder в Excel для записи данных запроса, который будет писать большую часть кода для вас. Но они гибкие и, вероятно, не нуждаются в программировании (для программистов не обязательно программировать). Посмотрите на диалог параметров при настройке запроса.

+0

Хм, я вижу, что сеть использует фильтры для определенных портов (если это имеет смысл), знаете ли вы, есть ли способ указать, какой порт использовать? Объект XMLHTTP60 работает, но не любой другой – Alter