Book list - getting book details from amazon using Excel VBA barcode lookups

后端 未结 4 1096
忘了有多久
忘了有多久 2020-12-13 16:28

I have a barcode reader and bunch of books. For each of the books, I want to list the book name and the author in an Excel spreadsheet.

My view is that some VBA cod

4条回答
  •  情话喂你
    2020-12-13 16:42

    This is has been enormously helpful for me!

    I have updated the macro to allow it to cycle through a column of ISBN numbers until it reaches an empty cell.

    It also search for publisher, year and edition.

    I have added some basic error checking if certain fields are not available.

    Sub ISBN()
     Do
     Dim xmlDoc As DOMDocument60
     Dim xWords As IXMLDOMNode
     Dim xType As IXMLDOMNode
     Dim xword As IXMLDOMNodeList
     Dim xWordChild As IXMLDOMNode
     Dim oAttributes As IXMLDOMNamedNodeMap
     Dim oTitle As IXMLDOMNode
     Dim oAuthor As IXMLDOMNode
     Set xmlDoc = New DOMDocument60
     Set xWords = New DOMDocument60
     xmlDoc.async = False
     xmlDoc.validateOnParse = False
     r = CStr(ActiveCell.Value)
    
     xmlDoc.Load ("http://xisbn.worldcat.org/webservices/xid/isbn/" _
                  + r + "?method=getMetadata&format=xml&fl=author,title,year,publisher,ed")
    
     Set xWords = xmlDoc
    
         For Each xType In xWords.ChildNodes
             Set xword = xType.ChildNodes
             For Each xWordChild In xword
                 Set oAttributes = xWordChild.Attributes
                 On Error Resume Next
                 Set oTitle = oAttributes.getNamedItem("title")
                 Set oAuthor = oAttributes.getNamedItem("author")
                 Set oPublisher = oAttributes.getNamedItem("publisher")
                 Set oEd = oAttributes.getNamedItem("ed")
                 Set oYear = oAttributes.getNamedItem("year")
                 On Error GoTo 0
             Next xWordChild
         Next xType
      On Error Resume Next
      ActiveCell.Offset(0, 1).Value = oTitle.Text
    
      On Error Resume Next
      ActiveCell.Offset(0, 2).Value = oAuthor.Text
    
      On Error Resume Next
      ActiveCell.Offset(0, 3).Value = oPublisher.Text
    
      On Error Resume Next
      ActiveCell.Offset(0, 4).Value = oYear.Text
    
      On Error Resume Next
      ActiveCell.Offset(0, 5).Value = oEd.Text
    
    
      ActiveCell.Offset(1, 0).Select
      Loop Until IsEmpty(ActiveCell.Value)
    
     End Sub
    

提交回复
热议问题