2013-04-11 3 views
2

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

Когда я вводим даты в ячейки B3 и B4 и нажимаю Commandbutton1, Excel может импортировать все данные из моего веб-страницы, на мой «результат» Excel листов

Например:

date 1: 04/03/2013 <<<< " it will be in sheets "input" cell B3 
date 2 : 11/04/2013 <<<<< " it will be in sheet "input " cell B4 
choosen companies <<<<<< its Range "B7: B17" 

Я добавил образец лист Excel и PrintScreen веб-страницы .. Любые идеи ?

Моя веб-страница URL:

http://www.spk.gov.tr/apps/MutualFundsPortfolioValues/FundsInfosFP.aspx?ctype=E&submenuheader=0

образец Excel и образец изображение данных: http://uploading.com/folders/get/b491mfb6/excel-web-query

+0

У вас есть способ автоматизировать заполнение списков на этой странице, чтобы генерировать данные, которые вы хотите? Если вы не можете это сделать, вам может быть лучше использовать параметр «загрузить как xls», так как вам все равно придется делать это вручную. – NickSlash

+0

Sidenote: может захотеть использовать другой хост изображения, много всплывающих окон NSFW – NickSlash

+0

как я могу его автоматизировать? Мне нужны данные компании Companie под названием Allianz на этой странице ... Я добавил образец файла excel на http://uploading.com/folders/get/b491mfb6/excel-web-query –

ответ

0

Вот код для импорта данных с помощью IE Automation.

Входные параметры (введите в Лист1, как на скриншоте ниже)
даты начала = B3
дата окончания = B4
Şirketler = B5 (Это позволяет кратные значения, которые должны появиться ниже B5 и т.д.)

enter image description here

ViewSource страницы ввода fileds enter image description here

Как код работает:

  • код создает объект Internet Explorer и переходит к site
  • Ждет, пока страница полностью загружена и готова. (IE.readystate)
  • Создает класс объекта HTML
  • Введите значения для полого ввода из Лист1 (txtDateBegin, txtDateEnd, lstCompany)
  • нажимает на кнопку отправить
  • итерации через каждую строку таблицу dgFunds и отвалы в первенствует Sheet2

Код:

Dim IE As Object 
Sub Website() 


    Dim Doc As Object, lastRow As Long, tblTR As Object 
    Set IE = CreateObject("internetexplorer.application") 
    IE.Visible = True 

navigate: 
    IE.navigate "http://www.spk.gov.tr/apps/MutualFundsPortfolioValues/FundsInfosFP.aspx?ctype=E&submenuheader=0" 

    Do While IE.readystate <> 4: DoEvents: Loop 

    Set Doc = CreateObject("htmlfile") 
    Set Doc = IE.document 

    If Doc Is Nothing Then GoTo navigate 

    Set txtDtBegin = Doc.getelementbyid("txtDateBegin") 
    txtDtBegin.Value = Format(Sheet1.Range("B3").Value, "dd.MM.yyyy") 

    Set txtDtEnd = Doc.getelementbyid("txtDateEnd") 
    txtDtEnd.Value = Format(Sheet1.Range("B4").Value, "dd.MM.yyyy") 


    lastRow = Sheet1.Range("B65000").End(xlUp).row 
    If lastRow < 5 Then Exit Sub 

    For i = 5 To lastRow 

     Set company = Doc.getelementbyid("lstCompany") 
     For x = 0 To company.Options.Length - 1 
      If company.Options(x).Text = Sheet1.Range("B" & i) Then 
       company.selectedIndex = x 

       Set btnCompanyAdd = Doc.getelementbyid("btnCompanyAdd") 
       btnCompanyAdd.Click 
       Set btnCompanyAdd = Nothing 

       wait 
       Exit For 
      End If 
     Next 
    Next 


    wait 

    Set btnSubmit = Doc.getelementbyid("btnSubmit") 
    btnSubmit.Click 

    wait 

    Set tbldgFunds = Doc.getelementbyid("dgFunds") 
    Set tblTR = tbldgFunds.getelementsbytagname("tr") 



    Dim row As Long, col As Long 
    row = 1 
    col = 1 

    On Error Resume Next 

    For Each r In tblTR 

     If row = 1 Then 
      For Each cell In r.getelementsbytagname("th") 
       Sheet2.Cells(row, col) = cell.innerText 
       col = col + 1 
      Next 
      row = row + 1 
      col = 1 
     Else 
      For Each cell In r.getelementsbytagname("td") 
       Sheet2.Cells(row, col) = cell.innerText 
       col = col + 1 
      Next 
      row = row + 1 
      col = 1 
     End If 
    Next 

    IE.Quit 
    Set IE = Nothing 

    MsgBox "Done" 

End Sub 

Sub wait() 
    Application.wait Now + TimeSerial(0, 0, 10) 
    Do While IE.readystate <> 4: DoEvents: Loop 
End Sub 

Ouput стол в Листе 2

enter image description here

НТН

+0

Я получаю «Ошибка проверки запроса Http или неожиданный запрос Http» ERROR ... Возможно ли изменить >>> Входные параметры Дата начала = Дата окончания B3 = B4 Şirketler = от B5 до B15 <<<<<, потому что я хочу загрузите более 6 фондов одновременно Таблица вывода B20 –

+0

@AcemiExcelci Я обновил код, чтобы добавить больше, чем Şirketler за раз. – Santosh

+0

Дорогой Сантош, вы можете загрузить или отправить мне свою книгу Excel по электронной почте, пожалуйста. Поскольку я получаю ошибки времени выполнения 424, введите ошибку несоответствия и т. Д. I не знаю, что случилось. –

0

можно read about it by clicking here затем использовать записи макросов для записи делать это, это даст вам некоторый код для работы, и если вам нужна дополнительная помощь, просто спросите

вот еще вопрос о переполнении стека: Importing data from web page with diffrent Dates in excel using VBA code

В основном вы собираетесь добавить объект QueryTable в коллекцию QueryTables активного рабочего листа в Excel.

Вот ссылка на MSDN Таблицы запросов: MSDN Library: Excel 2007 Querytables Add method

+0

магнитофон не помог. –

+0

макрорекордер не помогает .. это потому, что страница загрузилась как опция xls или xml ... также ваш вопрос, связанный с вопросом, отличается от моего –

+1

его другим, потому что у него другой вопрос, похожий на ваш, который может помочь решить вашу проблему , – NickSlash

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