2010-05-23 3 views
1

Я потратил часы на чистку всего, что связано с VBA, вызывая данные из Интернета в excel, и ничто не дает учебника о том, как это сделать, только сложные примеры, не связанные с тем, что Я хочу делать.Извлечение данных из Интернета с помощью Excel

Я хочу извлечь данные из .html или .xml сайта, не имеет значения, через Excel и найти конкретные точки в этих данных. Я могу найти конкретные моменты, но не знаю, как получить данные или прокрутить несколько строк. Я сделал это точно в MIRC (вроде кода C).

http://eve-central.com/home/quicklook.html?typeid=438
http://api.eve-central.com/api/quicklook?typeid=438
Те два примера, используя примерно те же данные, которые я хотел бы получить. Это будет FAR более конкретным с не более чем 100 или так разными значениями.

Я хотел бы быть ТАУГТ, как это сделать, не указывать код, чтобы сделать это, или если вы должны объяснить каждую часть комментариями в глубину, пожалуйста.
Редактировать: Я просто говорю здесь, что не хочу, чтобы вы связали мне какой-то случайный код, который делает что-то подобное, и ожидайте, что я изменю его без объяснения. Не желая, чтобы кто-то просто написал полное руководство по интернет-возможностям для Excel.

Благодаря Ник

Edit: Я попытаюсь объяснить это снова в другом смысле. Я играю в игру под названием EVE Online, и есть множество «рыночных» баз данных онлайн, которые позволяют доступ в этой форме для программ для извлечения данных по ценам определенных товаров. В значительной степени я хочу сделать это в документе Excel, а затем, очевидно, перечислить их в скрытом листе или что-то в этом роде. Я не хочу использовать вторичную программу, я знаю, что это возможно только в Excel.

ответ

1

Это быстрый и грубый ответ, потому что ваше звучание звучит немного изворотливое (см. Комментарий), но из моего понимания Excel я считаю, что лучше всего использовать драйвер ODBC и напрямую подключиться к MS Access (затем экспортировать в excel) в ту же базу данных, что веб-сайт использует для получения всех данных.

Это будет означать, что вам понадобится: 1. И имя пользователя, и пароль в базе данных. 2. связанные с SQL-запросы, которые веб-сайт использует для извлечения данных. (которые могут включать в себя объединения, функции и т. д.)

В противном случае вам нужно будет получить его через «фронт», , и вам нужно будет написать собственный анализатор html для раздела каждой страницы для создания XML-файла так что excel может прочитать данные таблицы окончательного содержимого. (для excel 2007 и выше.) Это также позволит вам вывести тип данных столбца, такой как int, char, bigint и т. Д. В схеме xml. Но да, это возможно только для того, чтобы сделать что-то вроде консоли C#/C++/java, но не в excel, потому что я уверен, что у excel нет функции, позволяющей писать собственный HTML-код, парсер для веб-сайта, о котором он ничего не знает.

надеюсь, что это помогает ..

+1

просто мысль, вы пытаетесь воссоздать БД без полномочий? –

+0

Библиотеки XML Micorsoft могут использоваться для синтаксического анализа XML и могут быть добавлены ссылки на ваш макропроект в зависимости от версии, которую вы установили. – Ahmad

+0

Это свободно доступно в Интернете, s_rathbone. Я просто хочу разобрать его на более легко читаемую версию в Excel, и они разработали свою базу данных для быстрого доступа к программам и данным, загруженным со второй страницы. – user348152

1

Посмотрите здесь - How can I send an HTTP POST request to a server from Excel using VBA? и getHTTP with (excel) VBA?

Что касается кода части. Замечание относительно предоставленных ссылок см. В документации MSDN относительно WinHttp.WinHttpRequest.5.1 и MSXML2.ServerXMLHTTP, чтобы получить более полную информацию о том, для чего используются эти библиотеки.Я также предложил прочитать немного об использовании COM-объектов в VBA

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

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

Edit:

Я понял ваш вопрос, поправьте меня, если я ошибаюсь, но суть вашего вопроса вращается вокруг I can find specific points but don't know how to get the data or scroll through multiple lines.

Использование http://msdn.microsoft.com/en-us/library/aa163921(office.10).aspx, вы, вероятно, потребуется, чтобы получить все результирующие узлы в объект XML. Затем вам может понадобиться прокрутить результирующий набор (что, я думаю, это то, что вы имели в виду при прокрутке).

Связанный вопрос: How to parse XML using vba

1

1) Скопировать ссылку на данные о ценах вы хотите. т.е.

http://api.eve-central.com/api/marketstat?typeid=34&typeid=35&regionlimit=10000002

2) В Excel выберите место, которые вы хотите, чтобы данные были импортированы. Предпочтительно чистый лист.

3) Данные -> Импорт внешних данных -> Новый веб-запрос.

4) Вставьте ссылку в адресную строку. Вы можете отредактировать ссылку позже, чтобы добавить или вычесть типы.

5) Нажмите кнопку Go.

6) Выберите один из желтых стрелочных ящиков. Я выбрал коробку прямо над версией evec_api.

7) Нажмите кнопку ОК, чтобы импортировать данные в листе выбранного на шаге 2.

Теперь вы можете правой кнопкой мыши на данных «Обновить данные».

Используйте любые формулы, чтобы узнать цены от этих данных до остальной части вашего листа.

Вы можете изменить адрес веб-запроса, щелкнув правой кнопкой мыши на любой части данных и выбрав пункт «Изменить запрос ...»

Надежда это получает вы идете в правильном направлении. Это будет работать с Excel версии 2002 (XP) и 2003. Excel 2007 более дружелюбен к XML-запросам.