2013-03-03 2 views
0

Я создаю базу данных Excel. Я хотел бы импортировать имена, электронные письма и рабочие места всех сотрудников фирмы с веб-сайта фирмы. Я выбираю Data-> From Web и выбираю целую страницу, так как это единственная возможность.Как сохранить новую структуру веб-импортированных данных после обновления?

На этой странице нет таблицы с данными; просто длинный список фотографий сотрудников с именами, адресами электронной почты и вакансиями рядом с ними

Я импортирую данные в электронную таблицу Excel: формат очень плох. Поэтому я начинаю вырезать и вставлять столбец для «имен», один для «email» и аналогично для «job position». Вся другая информация отменяется вручную.

Я хотел бы обновить данные, сохраняя этот новый формат. К сожалению, каждый раз, когда я обновляю импортированные данные с помощью кнопки «Обновить все», они возвращаются в исходный формат.

Как сохранить новый формат импортированных данных в Интернете после обновления?

Благодарю вас за вашу поддержку!

Kr,

+0

Если вам нужно отредактировать его вручную, я сомневаюсь, что это будет простой способ сделать это. Кажется, у меня нет импорта из Интернета, поэтому я могу помочь, но могут быть варианты настройки импорта данных. Если нет, вам нужно будет создать макрос, который делает для вас редактирование, или создать макрос, чтобы очистить веб-сайт (не используя функцию импорта). – NickSlash

+0

Спасибо NickSlash за ваш ответ. Можно ли создавать макросы для очистки веб-сайтов с помощью Excel? Нужна ли мне какая-то другая программа в качестве интерфейса между веб-и Excel? К сожалению, у меня нет отличных навыков программирования ... любая другая идея? – Avitus

+0

Я нашел импорт из веб-функции в конце, работает довольно хорошо. не видя веб-страницы (не обязательно должны быть реальными данными, если базовый HTML-код одинаков), вы берете данные из своих трудностей, чтобы понять, что может вызвать проблему. Создание скребка с использованием VBA является менее идеальным и не позволяет «обновлять», если вы не введете эту возможность. – NickSlash

ответ

2

Я соединил пример, который будет извлекать имя и заголовок с этой страницы вы указали и поместить их в лист 1.

код будет работать только при условии расположения базового html остается неизменным. Он не поддерживает обновление существующего списка (все, что на листе 1 удаляется до повторного чтения списка)

Чтобы использовать этот код, вы должны поместить его в новый модуль кода (а не в листы или разделы рабочей книги), а вы может запускать его либо из редактора кода, либо через меню макросов в главном окне excel.

' Note: This code requires the following references to be loaded. 
' Microsoft HTML Object Library (mshtml.tlb) 
' Microsoft Internet Controls (ieframe.dll) 
' To add a reference 
' In the VBA Code Editor, in the Tools Menu click the References item 
' Scroll through the list and ensure that the references are selected 
' Press OK and your done. 

Sub Scrape() 
Dim Browser As InternetExplorer 
Dim Document As HTMLDocument 
Dim Element As IHTMLElement 
Dim Elements As IHTMLElementCollection 
Dim empName As String 
Dim empTitle As String 

Dim Sheet As Worksheet 

    Set Sheet = ThisWorkbook.ActiveSheet 

    Sheet.UsedRange.ClearContents ' Nuke the old list 

    Set Browser = New InternetExplorer 

    Browser.navigate "http://www.hsbc.com/about-hsbc/leadership" 

    Do While Browser.Busy And Not Browser.readyState = READYSTATE_COMPLETE 
     DoEvents 
    Loop 

    Set Document = Browser.Document 

    Set Elements = Document.getElementsByClassName("profile-col1") 

    For Each Element In Elements 
     empName = Trim(Element.Children(1).Children(0).innerText) 
     empTitle = Trim(Element.Children(1).Children(1).innerText) 
     Sheet.Range("A1:B1").Insert xlShiftDown 
     Sheet.Cells(1, 1).Value = empName 
     Sheet.Cells(1, 2).Value = empTitle 
     'Debug.Print "[ name] " & empName 
     'Debug.Print "[ title] " & empTitle 
    Next Element 

    Set Browser = Nothing 
    Set Elements = Nothing 

End Sub 
+0

он работает, спасибо большое! – Avitus

+0

@Avitus: обычно это когда вы принимаете ответ :) – NickSlash

+0

Вы правы ;-) – Avitus

Смежные вопросы