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

后端 未结 4 1071
忘了有多久
忘了有多久 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 17:01

    I thought it was an easy one googling, but turned out more difficult than I expected.

    In fact, I was unable to find a VBA ISBN based program to get book data from the web, so decided to do one.

    Here is a VBA macro using the services from xisbn.worldcat.org. Examples here.. The services are free and don't need authentication.

    To be able to run it you should check at Tools-> References (in the VBE window) the "Microsoft xml 6.0" library.

    This macro takes the ISBN (10 digits) from the current cell and fills the following two columns with the author and title. You should be able to loop through a full column easily.

    The code has been tested (well, a bit) but there is no error checking in there.

     Sub xmlbook()
     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")
    
     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")
                 On Error GoTo 0
             Next xWordChild
         Next xType
      ActiveCell.Offset(0, 1).Value = oTitle.Text
      ActiveCell.Offset(0, 2).Value = oAuthor.Text
     End Sub
    

    I did not go through Amazon because of their new "straightforward" authentication protocol ...

提交回复
热议问题