2012-01-17 82 views
0

我是编程新手,我试图通过我的网页查询工作。excel vba - 在网络查询中创建参数和循环

代码中,我迄今是这样的......

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 

我想参数添加到该网站查询,例如,该网站将采取ISBN编号从我对另一个Excel列表片。 每个isbn号码将进入网络查询并将信息输入到单元格中。然后代码将重复,直到它通过我列表中的所有isbn数字。 感谢您的任何帮助!

回答

1

没有做这件事,并测试它(不Excel中对我的Ubuntu箱),你可以这样开始

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

然后用

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

可以更换

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

不得不平衡所有的字面双引号和字母(34),但你会到达那里。然后你需要一个子迭代另一个表中的isbns并调用这个子类。你真的需要两种类型吗?他们中的一个有时会失踪?

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 

你需要解决如何同时收集ISBN和防止循环访问,并通过您已经捆绑了它的“孪生”的系列名或10。如果仅仅将详细信息记录到文本文件中,还要养成为每个子程序编写错误处理程序的习惯。对于Excel的东西先去这些家伙:ozgrid,mrexcel,Pearson。我会张贴链接,但现在是时候了。祝你好运。