J'ai récemment dû faire exactement cela en indexant notre bibliothèque à des fins d'assurance. Voici le code de la classe vba je piraté ensemble:
Option Compare Database
dim BookTitle As String
dim BookTitleLong As String
dim BookAuthorsText As String
dim BookPublisherText As String
dim BookSummary As String
dim BookNotes As String
dim accessKey As String
Private Sub Class_Initialize()
'Your isbnDB access key'
accessKey = "PUT ACCESSKEY HERE"
End Sub
Property Get Title() As String
Title = BookTitle
End Property
Property Get TitleLong() As String
TitleLong = BookTitleLong
End Property
Property Get AuthorsText() As String
AuthorsText = BookAuthorsText
End Property
Property Get PublisherText() As String
PublisherText = BookPublisherText
End Property
Property Get Summary() As String
Summary = BookSummary
End Property
Property Get Notes() As String
Notes = BookNotes
End Property
Public Function Lookup(isbn As String) As Boolean
Lookup = False
Dim xmlhttp
Set xmlhttp = CreateObject("MSXML2.xmlhttp")
xmlhttp.Open "GET", "https://isbndb.com/api/books.xml?access_key=" & accessKey & "&results=texts&index1=isbn&value1=" & isbn, False
xmlhttp.send
'Debug.Print "Response: " & xmlhttp.responseXML.XML'
Dim xmldoc
Set xmldoc = CreateObject("Microsoft.XMLDOM")
xmldoc.async = False
'Note: the ResponseXml property parses the server's response, responsetext doesn't
xmldoc.loadXML (xmlhttp.responseXML.XML)
If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") = 0) Then
MsgBox "Invalid ISBN or not in database"
Exit Function
End If
If (xmldoc.selectSingleNode("//BookList").getAttribute("total_results") > 1) Then
MsgBox "Caution, got more than one result!"
Exit Function
End If
BookTitle = xmldoc.selectSingleNode("//BookData/Title").Text
BookTitleLong = xmldoc.selectSingleNode("//BookData/TitleLong").Text
BookAuthorsText = xmldoc.selectSingleNode("//BookData/AuthorsText").Text
BookPublisherText = xmldoc.selectSingleNode("//BookData/PublisherText").Text
BookNotes = xmldoc.selectSingleNode("//BookData/Notes").Text
BookSummary = xmldoc.selectSingleNode("//BookData/Summary").Text
Lookup = True
End Function
obtenir une clé API, collez le code ci-dessus (avec votre clé) dans un nouveau module de classe dans l'éditeur VBA (Insérer-> Module de classe) et nommez le module "isbn".Vous devez également ajouter une référence à « Microsoft XML » dans l'éditeur VBA (Outils-> Références)
Vous pouvez tester cela fonctionne avec l'extrait de code ci-dessous dans un module vba normal:
Public Function testlookup()
Dim book
Set book = New isbn
book.Lookup ("0007102968")
Debug.Print book.Title
Debug.Print book.PublisherText
End Function
Ensuite, tapez simplement "testlookup" dans la fenêtre immédiate (View-> Immediate Window). Vous devriez voir une réponse:
The Times book of quotations
[Glasgow] : Times Books : 2000.
isbnDB peut revenir plus les données que je collectionne dans la classe ci-dessus, lisez la référence API ici: http://isbndb.com/docs/api/ et d'adapter la classe à vos besoins.
J'ai trouvé cet article très utile pour expliquer comment utiliser XMLHTTP à partir de l'accès: http://www.15seconds.com/issue/991125.htm
Les pages msdn sur les méthodes XML DOM et XMLHttpRequest Object sont également utiles (parce que je suis un nouvel utilisateur Je ne peux poster deux liens actifs, vous devrez remplacer les points dans les urls ci-dessous):
msdn microsoft com/fr-fr/bibliothèque/ms757828 (v = VS.85) .aspx
msdn microsoft com /en-us/library/ms535874(v=vs.85).aspx
Je serais inquiet de recevoir toutes les données saisies! –
Je souhaite l'automatiser, donc tout ce que je dois faire est de taper (ou scanner si je peux emprunter un scanner de codes à barres) et mon programme fait le reste. en levant les yeux d'une forme de base de données en ligne de livres (par exemple isbndb.com) –
Si votre application est juste interroger l'API ISBNDB, où la base de données entrent-elles dans l'image? –