2012-01-17 9 views
0

私はプログラミングが初めてで、私は自分のWebクエリを処理しようとしています。excel vba - Webクエリでパラメタとループを作成する

私はこれまでこのように書きしたコード...

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番号を取るように、このWebクエリにパラメータを追加しようとしていますシート。 各isbn番号がWebクエリに入り、情報がセルに入力されます。それからコードは私のリストのすべてのisbn番号を通過するまで繰り返されます。 助けていただきありがとうございます!

答えて

1

(私のUbuntuのボックスにはExcelを)全部のことをやっていないし、それをテストすることなく、あなたはその後、

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

あなたがかもしれないと

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

を置き換えるため

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

を開始することができますすべてのリテラルの二重引用符とchr(34)のバランスを取ることで挑戦しなければなりませんが、あなたはそこに着くでしょう。次に、別のシート上のisbnsを反復してこのサブを呼び出すためにサブを必要とします。あなたは本当に両方の種類のisbnが必要ですか?そのうちの1人は時々行方不明ですか?

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コードを収集し、繰り返し処理と、それは「双子」だとあなたはすでにバンドルさISBN13または10を通過しないようにする方法を考え出す必要があります。また、テキストファイルに詳細を記録するだけであれば、すべてのサブファイルにエラーハンドラを書く癖があります。 Excelの場合は、最初にozgrid、mrexcel、Pearsonに移動してください。私はリンクを掲示するだろうが、それは回すべき時だ。Good Luck。

関連する問題