1

Тема: VBA: Excel, вэб-запрос для столбца ссылок

ДОбрый день!
Решаю задачу написания макроса, цель которого - создать веб-запрос для списка ссылок с интернет-адресами, с которых необходимо выгрузить данные на лист в эксель.
По умолчанию, веб-запрос необходимо заполнить, указав ссылки в интернете.
Непонятно, как взять значение ссылки из ячейки и использовать это значение для подстановки в запрос?
Куда прописать цикл, чтобы запрос повторялся, пока столбец  со ссылками не закончится?
Как сделать так, чтобы результаты копировались каждый раз на свободное место листа, т.е. не поверх импортированных данных?
Поскольку ссылок много - около 200-300, а импортируемые данные занимают несколько столбцов для каждой ссылки, как решить вопрос того, что место на листе закончится???

Вот код, записанный рекордером

 Range("A78:B78").Select
    Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    Range("F80").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.ra-national.ru/?page=p-49698a2d", Destination:=Range("F80"))
        .Name = "?page=p-49698a2d"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With

Кроме того, поискав в интернете, нашла код, кажется. позволяющий найти первый пустой столбец

r = Range("A" & Rows.Count).End(xlUp).Row + 1

У меня, к сожалению, не техническое образование, достаточно сложно с нуля начинать:)
Буду очень рада любому отзыву на мою проблему!

2

Re: VBA: Excel, вэб-запрос для столбца ссылок

Anna пишет:

Непонятно, как взять значение ссылки из ячейки и использовать это значение для подстановки в запрос?

WorkBooks("…").WorkSheets("…").Cells(…, …).Hyperlinks.Item(1).Address

Понадобится как минимум ещё один столбец, рядом с адресами, для указания порядкового номера таблицы на странице, откуда следует извлекать данные. В приведённом примере — это номер «7»:

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.ra-national.ru/?page=p-49698a2d", Destination:=Range("…"))
        .Name = "?page=p-49698a2d"
        .FieldNames = True
        …
        .WebTables = "7"
        …
    End With

У Вас этого нет, но, полагаю, сие понадобится.

Anna пишет:

Куда прописать цикл, чтобы запрос повторялся, пока столбец  со ссылками не закончится?

Очевидно, вопрос должен был звучать не «куда», а «как»?! Например, так:

    For i = 1 To Workbooks("…").Worksheets("…").UsedRange.Rows.Count
        Debug.Print Workbooks("…").Sheets("…").Cells(i, 1).Hyperlinks.Item(1).Address
    Next
Anna пишет:

Как сделать так, чтобы результаты копировались каждый раз на свободное место листа, т.е. не поверх импортированных данных?
Поскольку ссылок много - около 200-300, а импортируемые данные занимают несколько столбцов для каждой ссылки, как решить вопрос того, что место на листе закончится???

То же свойство «Workbooks("…").Worksheets("…").UsedRange». Куда Вы хотите вставлять новые данные — ниже уже заполненного или правее?