koralek | Дата: Среда, 20.02.2013, 19:13 | Сообщение # 1 |
Подполковник
Группа: Администраторы
Сообщений: 147
Статус: Offline
| Полная автоматизация получения данных веб-страницы в листе Excel с помощью VBA
В этом видео мы показываем полную автоматизацию как получить данные в лист Excel с помощью VBA.1. Мы сначала изучить сайт и узнать элементов мы должны будем получить доступ к форме и последующие результаты. Когда вы будете изучать исходный код веб-страницы вы заметите, что фактические результаты, завернутый в DIV контейнеров.2. Далее мы написать код VBA Мы используем GetElementById метод, чтобы получить ссылку на один объект и GetElementsByTagName метод, чтобы получить коллекцию всех элементов. Далее мы проходим по всем элементам и получить свойства текста или данных ('InnerText') всех элементов, которые мы хотели бы иметь. Наш код создает экземпляр нашего веб-браузера (Internet Explorer) и переходит на адрес нашего выбора, а затем помогает получить или извлечь данные с помощью событий. Мы также гарантируем, что код помещены в соответствующие строки и столбцы так, что любой дальнейший анализ производится легко. Наконец, мы используем записанный макрос для форматирования данных, чтобы сделать его более презентабельным для человеческого глаза. Примечание: Если имена классов или другие изменения в код HTML на веб-странице вам нужно изменить ваш код VBA соответственно, чтобы очистить данные правильно.Макро-код, чтобы получить данные веб-страницы в листе Excel с помощью VBA приведен ниже:
Sub test() Dim eRow As Long Dim ele As Object Set sht = Sheets("Sheet1") RowCount = 1 sht.Range("A" & RowCount) = "Title" sht.Range("B" & RowCount) = "Company" sht.Range("C" & RowCount) = "Location" sht.Range("D" & RowCount) = "Description" eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Set objIE = CreateObject("InternetExplorer.Application") myjobtype = InputBox("Enter type of job eg. sales, administration") myzip = InputBox("Enter zipcode of area where you wish to work") With objIE .Visible = True .navigate "http://www.jobs.com/" Do While .Busy Or _ .readyState <> 4 DoEvents Loop Set what = .document.getElementsByName("q") what.Item(0).Value = myjobtype Set zipcode = .document.getElementsByName("where") zipcode.Item(0).Value = myzip .document.getElementById("JobsButton").Click Do While .Busy Or _ .readyState <> 4 DoEvents Loop For Each ele In .document.all Select Case ele.classname Case "Result" RowCount = RowCount + 1 Case "Title" sht.Range("A" & RowCount) = ele.innertext Case "Company" sht.Range("B" & RowCount) = ele.innertext Case "Location" sht.Range("C" & RowCount) = ele.innertext Case "Description" sht.Range("D" & RowCount) = ele.innertext End Select Next ele End With Macro1 Set objIE = Nothing End Sub Sub Macro1() ' ' Macro1 Macro ' Formatting imported data ' ' Columns("A:D").Select Selection.Columns.AutoFit With Selection .VerticalAlignment = xlTop .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext End With Range("D1").Select Columns("D:D").ColumnWidth = 50 Columns("A:D").Select Selection.Rows.AutoFit End Sub
Watch the training video below to see how the process of complete automation of data collection from a web page into an Excel spreadsheet is implemented:
http://www.familycomputerclub.com/get-web....ba.html
|
|
| |