Excel VBA - создание параметров и цикла в веб-запросе - PullRequest
1 голос
/ 17 января 2012

Я новичок в программировании и пытаюсь выполнить мой веб-запрос.

Код, который у меня есть, выглядит так ...

Sub webquery1()

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://dealoz.com/prod.pl?cat_id=&op=buy&op2=&lang=en-us&search_country=us&shipto=us&cur=usd&zip=&nw=y&class=&pqcs=&pkcs=&quantity=&shipping_type=&sort=&catby=&query=[""089203579X""]&ean=[""9780892035793""]&mpn=&asin=&rcount=2" _
        , Destination:=Range("A1"))
        .Name = _
        "prod.pl?cat_id=&op=buy&op2=&lang=en-us&search_country=us&shipto=us&cur=usd&zip=&nw=y&class=&pqcs=&pkcs=&quantity=&shipping_type=&sort=&catby=&query=[""089203579X""]&ean=[""9780892035793""]&mpn=&asin=&rcount=2"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "10"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False

    End With

End Sub

Я пытаюсь добавить параметры в этот веб-запрос, чтобы веб-сайт брал номера из списка, который у меня есть на другом листе Excel. Каждый номер isbn будет указан в веб-запросе, а информация будет введена в ячейку. Код будет повторяться до тех пор, пока он не пройдет все номера ISBN в моем списке. Спасибо за любую помощь !!!

1 Ответ

1 голос
/ 17 января 2012

Не делая всего этого и не проверяя его (нет Excel на моем Ubuntu box), вы можете начать таким образом

Sub webquery1(byval isbn10 as string, byval isbn13 as string)

затем заменить

089203579X""]&ean=[""9780892035793

с

& isbn10 & chr(34) & chr(34) & "]&ean=[" & chr(34) & chr(34) & isbn13 &

вам, возможно, придется возиться с балансировкой всех буквальных двойных кавычек и chr (34) с, но вы получите это. Затем вам нужна подпрограмма для перебора isbns на другом листе и вызова этой подпрограммы. Вам действительно нужны оба вида isbn? Один из них иногда отсутствует?

Sub iter_thru_isbn_sheet_calling_webquery()
    dim range_isbns as range
    dim c as range
    set range_isbns = sheets("whateveritscalled").range("addressgoeshere")
    For each c in range_isbns
        if not c.value = "" then    '<---- better way to use regexp but you can research
            call webquery1(c.value, c.offset(0,1).value)   '<---if 10s and 13s side-by-side
            doevents    '<---- query can take awhile. I don't do web queries in vba, so ??
        end if
    next c
End Sub

Вам необходимо выяснить, как собрать оба isbns и предотвратить повторение и передачу isbn13 или 10, которые вы уже связали с его "близнецом". Также приобретите привычку писать обработчик ошибок для каждой подпрограммы, если только для записи подробностей в текстовый файл. Что касается Excel, сначала обратитесь к этим парням: ozgrid, mrexcel, Pearson. Я бы опубликовал ссылки, но пришло время сдавать. Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...