Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel/VBA Webabfrage

Excel/VBA Webabfrage
25.08.2014 08:44:44
Melissa
Hallo zusammen,
folgendes Szenario:
Ich möchte ISBN Nummern in eine Excel Tabelle speichern und dann Informationen dazu abrufen lassen aus dem Internet (Buchtitel, Autor, Erscheinungsdatum).
Bisher habe ich folgendes:
Exceltabelle, wenn in den Feldern A1, B1, C1 etc. die ISBN Nummern eingetragen werden, dann generiert sich in A2, B2, C2 etc. ein Link der zu Amazon führt und das entsprechende Buch anzeigt.
Jetzt hätte ich gerne, dass in den Feldern A3, A4, A5 die Infos von oben importiert werden, also das dort Buchtitel, Autor und Erscheinungsdatum in den Feldern erscheinen.
Bedeutet:
In A1 wird die ISBN eingegeben per Handscanner, daraufhin generiert sich der Link in A2 der zu Amazon führt, in A3 soll der Titel erscheinen, in A4 der Autor und in A5 das Erscheinungsdatum. Dasselbe soll dann für B1, C1 etc. passieren.
Ich weiß, dass sowas mit VBA möglich ist, allerdings habe ich so gut wie keine Kenntnisse in VBA. :-(
Ich habe hier im Forum schon ein Skript gefunden, welches, wenn man eine ISBN Nummer eingibt die entsprechende Webseite aufruft. Allerdings ist dort eine feste ISBN hinterlegt.
Es wäre super, wenn mir jemand vielleicht ein Skript schreiben könnte, welches die oben genannten Anforderungen erfüllt oder ob jemand das Skript welches bereits hier im Forum vorhanden ist ein wenig umschreibt.
Ich würde mir im nachhinein das Skript anschauen und versuchen zu verstehen, damit ich auch weiß, was genau dort passiert.
Es wäre wirklich super, wenn mir jemand helfen könnte...
Liebe Grüße
Melissa

Anzeige

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel/VBA Webabfrage
25.08.2014 10:16:43
fcs
Hallo Melissa,
Ich habe hier im Forum schon ein Skript gefunden, welches, wenn man eine ISBN Nummer eingibt die entsprechende Webseite aufruft. Allerdings ist dort eine feste ISBN hinterlegt.
Wenn du schon etwas fast passendes gefunden hast, dann solltest du hier den entsprechenden Link mit posten.
Ideal wäre wenn du deine vorhandene Tabelle, ggf. anonymisiert, hier hocladen würdest, dann muss man weniger nachbauen.
Gruß
Franz

Anzeige
AW: Excel/VBA Webabfrage
25.08.2014 13:14:03
fcs
Hallo Melissa,
ich hab jetzt mal versucht das Script/Makro anzupassen.
Leider sind die Einträge auf der Amzon-Seite nicht systematisch immer gleich aufgebaut.
Deshalb kann es bei der Auswertung des eingelesenen Textes zu Fehlern im Makroablauf kommen. Evtl. muss man da nochmals nachbessern.
Gruß
Franz
Sub webabfrage()
Dim i As Long, Zeile As Long
Dim Itext As String
Dim MyUrl As String
Dim MyISBN As String
Dim IEApp As Object
Dim IEDocument As Object
Dim strTitel As String, strAutor As String, varDatum
On Error GoTo Fehler
For Zeile = 3 To Cells(Rows.Count, 1).End(xlUp).Row
MyISBN = Cells(Zeile, 1).Text
MyUrl = "http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=" _
& "%C3%85M%C3%85%C5%BD%C3%95%C3%91&url" _
& "=search-alias%3Daps&field-keywords=" & MyISBN
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate MyUrl
Do
DoEvents
Loop Until IEApp.readyState = 4
Set IEDocument = IEApp.Document
Itext = IEDocument.body.innertext
'Debug.Print Itext
IEApp.Quit
Set IEApp = Nothing
Set IEDocument = Nothing
'Text vor Keyword (ISBN in Anführungszeichen) abschneiden
Itext = Mid(Itext, InStr(1, Itext, """" & MyISBN & """"))
'Text nach der ")" abschneiden
Itext = Left(Itext, InStr(1, Itext, ")"))
'Debug.Print Itext
strTitel = ""
strAutor = ""
varDatum = ""
'Prüfen, ob " von " im Text vorhanden - trennt Titel und Autor
If InStr(1, Itext, " von ") > 0 Then
strTitel = Left(Itext, InStr(1, Itext, " von ") - 1)
strTitel = Mid(strTitel, Len(MyISBN) + 7)
strAutor = Mid(Itext, InStr(1, Itext, " von ") + 5)
strAutor = Trim(Left(strAutor, InStrRev(strAutor, "(") - 1))
Else
'Titel ohne Autor
strTitel = Itext
strTitel = Mid(strTitel, Len(MyISBN) + 7)
End If
'Prüfen ob "(" im Text - danach beginnt meistens Erscheinungsdatum
If InStrRev(Itext, "(") > 0 Then
varDatum = Trim(Mid(Itext, InStrRev(Itext, "(") + 1))
varDatum = Replace(varDatum, ")", "")
End If
Resume01:
Cells(Zeile, 4).Value = strTitel
Cells(Zeile, 5).Value = strAutor
Cells(Zeile, 6).Value = varDatum
Next Zeile
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 5 'Fehler bei der Instr-Suche bzw. der Mid- oder Left-Funktion
Resume Resume01
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Excel/VBA Webabfrage
25.08.2014 13:34:25
Melissa
Hey,
super, vielen lieben Dank, dass klappt bisher hervorragend. Ja das mit den Feldern habe ich mir gedacht, dass das eventuell nicht einfach wird, aber dann muss man eben teilweise händisch die Infos vervollständigen.
Jetzt habe ich noch eine kleine Frage.
Wenn ich jetzt das Skript ausführe, dann ändert sich das alles. Ich finde gerade nicht die richtigen Worte um das zu erklären, deswegen ein Bild als Screenshot angefügt.
Userbild
Kann man das noch irgendwie verhindern?
Wenn nicht - nicht schlimm, bin wirklich dankbar für dieses Skript welches du geschrieben hast.
Grüße
Melissa

Anzeige
AW: Excel/VBA Webabfrage
25.08.2014 13:58:51
fcs
Hallo Melissa,
mach die Spalten D bis F etwas breiter und formatiere die Spalten so, dass der Inhalt linksbündig ausgerichtet wird. Die Spalte C mit den Links kannst du auch schmaler machen, ußerdem würde ich die Formel anpassen, so dass die komplette Linkadresse sondern nur ein kürzezerer Text angezeigt wird.
z.B. in C3:
=WENN(A3="";"";(HYPERLINK(VERKETTEN("http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_
DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=";A3)
;"Amazon ISBN " & TEXT(A3;"0"))))
Gruß
Franz

Anzeige
AW: Excel/VBA Webabfrage
26.08.2014 07:46:10
Melissa
Guten Morgen Franz,
erst mal nochmal riesen Dank für das super Skript. Das mit deinem Tipp hat leider nicht geklappt, dass Problem ist wohl, dass beim Autor und Titel vor dem Text Leerzeichen mit eingefügt werden. Siehe Screen:
Userbild
Das wird man wohl nichts machen können... Dann muss ich da händisch die Leerzeichen entfernen, es kann ja nicht alles optimal laufen :D
Die Kürzung des Links war eine super Idee, schaut so viel besser aus, auch hier nochmal Danke! :D
Jetzt hätte ich wohl noch eine kleine Frage bzw. Sache die man noch ändern könnte. Kann man es in dem Skript noch so ändern, dass bereits vorhandene Einträge nicht wieder neu eingetragen werden? Also wenn ich in im ersten Feld die ISBN eintrage und dann das Skript ausführe stehen die Infos ja dort. Wenn ich jetzt ins zweite Feld die ISBN eintrage und dann das Skript ausführe, dann wird ja in die erste Zeile nochmal die Daten eingetragen, kann man das noch verhindern und wenn ja könntest du das vielleicht noch anpassen im Skript, WENN es kein allzu großer Aufwand ist?
Ansonsten wie gesagt ganz ganz lieben Dank für deine Zeit und deine Mühe!

Anzeige
AW: Excel/VBA Webabfrage
26.08.2014 08:37:40
fcs
Hallo Melissa,
ich hab noch ein wenig rumgetüftelt am Makro.
Die Startzeile für das Auswerten der Links kannst du jetzt in einer Inputbox eingeben.
Als Vorgabewert wird die Zeile der aktiven Zelle genommen.
Die "Leerzeichen", die angezeigt werden sind Zeilenschaltungen. Deren Anzahl ist scheinbar immer unterschiedlich. Sie werden jetzt ersetzt, so dass vor dem Titel in den Excelzellen keine mehr vorhanden sein sollten.
Gruß
Franz
Sub webabfrage()
Dim i As Long, Zeile As Long
Dim Itext As String
Dim MyUrl As String
Dim MyISBN As String
Dim IEApp As Object
Dim IEDocument As Object
Dim strTitel As String, strAutor As String, varDatum, varZeile
On Error GoTo Fehler
varZeile = Application.InputBox("Startzeile für Einlesen der Links", _
"Amazon-Links auswerten", ActiveCell.Row, Type:=1)
If varZeile  0 Then
strTitel = Left(Itext, InStr(1, Itext, " von ") - 1)
strTitel = Trim(Mid(strTitel, Len(MyISBN) + 3))
strAutor = Mid(Itext, InStr(1, Itext, " von ") + 5)
strAutor = Trim(Left(strAutor, InStrRev(strAutor, "(") - 1))
Else
'Titel ohne Autor
strTitel = Itext
strTitel = Trim(Mid(strTitel, Len(MyISBN) + 3))
End If
'Prüfen ob "(" im Text - danach beginnt meistens Erscheinungsdatum
If InStrRev(Itext, "(") > 0 Then
varDatum = Trim(Mid(Itext, InStrRev(Itext, "(") + 1))
varDatum = Replace(varDatum, ")", "")
End If
Resume01:
Cells(Zeile, 4).Value = strTitel
Cells(Zeile, 5).Value = strAutor
Cells(Zeile, 6).Value = varDatum
Next Zeile
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 5 'Fehler bei der Instr-Suche bzw. der Mid- oder Left-Funktion
Resume Resume01
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Excel/VBA Webabfrage
26.08.2014 09:12:17
Melissa
Hallo Franz,
absolut perfekt. Genau so hab ich mir das vorgestellt. Ein riesen Dankeschön für deine Hilfe bzw. für das Skript.
Habe mir jetzt noch einen Button erstellt, der das Makro ausführt, dass macht es dann noch bisschen leichter :D.
Jetzt versuche ich noch das Skript zu verstehen und nachzuvollziehen und dann ist alles perfekt.
Wie gesagt nochmals vielen vielen Dank. (:

Anzeige
AW: Excel/VBA Webabfrage
26.08.2014 10:10:15
Melissa
Ich bins nochmal...
@Franz - wäre es noch möglich den Preis und das Cover abzufragen? Oder wäre das zu aufwendig?
In Excel würde das dann so aussehen wie bisher nur hinter Titel, Autor, Erscheinungsdatum, Preis, Cover
Also nur wenn du Lust und Zeit hast das noch zu machen. Hab bisher ein paar Zeilen des Skriptes verstanden aber selbst was einfügen traue ich mich nicht..

Anzeige
AW: Excel/VBA Webabfrage
26.08.2014 11:47:49
fcs
Hallo Melissa,
das Cover ist ja ein Grafikelement mit einem Link. Dies läßst so nicht in die Exceldatei übertragen.
Die Preise "neu" und "gebraucht" kann man herausfischen. Sie werden jetzt in Spalte G und H eingetragen.
Dabei hab ich auch nochmals die Suche nach Autor und Erscheinungsdatum optimiert.
Gruß
Franz
Sub webabfrage()
Dim i As Long, Zeile As Long
Dim Itext As String
Dim MyUrl As String
Dim MyISBN As String
Dim IEApp As Object
Dim IEDocument As Object
Dim strTitel As String, strAutor As String, strPreis, varDatum, varZeile
On Error GoTo Fehler
varZeile = Application.InputBox("Startzeile für Einlesen der Links", _
"Amazon-Links auswerten", ActiveCell.Row, Type:=1)
If varZeile  0 Then
Itext = Left(Itext, InStr(1, Itext, "gebraucht (") - 1)
strPreis = Trim(Mid(Itext, InStrRev(Itext, "EUR")))
Cells(Zeile, 8) = strPreis
End If
If InStr(1, Itext, "neu (") > 0 Then
Itext = Left(Itext, InStr(1, Itext, "neu (") - 1)
strPreis = Trim(Mid(Itext, InStrRev(Itext, "EUR")))
Cells(Zeile, 7) = strPreis
End If
If Cells(Zeile, 7) = "" And Cells(Zeile, 8) = "" Then
Cells(Zeile, 7) = "keine Preisinfo"
End If
'Text vor letztem "EUR " abschneiden
If InStrRev(Itext, "EUR ") > 0 Then
Itext = Left(Itext, InStrRev(Itext, "EUR ") - 1)
End If
'Text nach letzter ")" abschneiden
If InStrRev(Itext, ")") > 0 Then
Itext = Left(Itext, InStrRev(Itext, ")"))
End If
'Zeilenschaltungen durch Leerzeichen ersetzen
Itext = Trim(Replace(Itext, Chr(10), " "))
Itext = Trim(Replace(Itext, Chr(13), " "))
'doppelte Leerzeichen durch einzelnes Leerzeichen ersetzen
Itext = Trim(Replace(Itext, "  ", " "))
strTitel = ""
strAutor = ""
varDatum = ""
'Prüfen, ob " von " im Text vorhanden - trennt Titel und Autor
If InStrRev(Itext, " von ") > 0 Then
strTitel = Left(Itext, InStrRev(Itext, " von ") - 1)
strTitel = Trim(Mid(strTitel, Len(MyISBN) + 3))
strAutor = Mid(Itext, InStrRev(Itext, " von ") + 5)
strAutor = Trim(Left(strAutor, InStrRev(strAutor, "(") - 1))
Else
'Titel ohne Autor
strTitel = Itext
strTitel = Trim(Mid(strTitel, Len(MyISBN) + 3))
End If
'Prüfen ob "(" im Text - danach beginnt meistens Erscheinungsdatum
If InStrRev(Itext, "(") > 0 Then
varDatum = Trim(Mid(Itext, InStrRev(Itext, "(") + 1))
varDatum = Replace(varDatum, ")", "")
End If
Resume01:
Cells(Zeile, 4).Value = strTitel
Cells(Zeile, 5).Value = strAutor
Cells(Zeile, 6).Value = varDatum
Next Zeile
Fehler:
With Err
Select Case .Number
Case 0 'Alles OK
Case 5 'Fehler bei der Instr-Suche bzw. der Mid- oder Left-Funktion
Resume Resume01
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige
AW: Excel/VBA Webabfrage
28.08.2014 09:13:47
Melissa
Hallo Franz,
sorry für die späte Rückmeldung. Vielen Dank nochmal. Denke das reicht jetzt erstmal.
Falls ich noch was brauche melde ich mich nochmal, aber ansonsten schonmal ein riesen Danke schön an Dich.
Gruß
Melissa

AW: Excel/VBA Webabfrage
28.08.2014 09:51:17
Melissa
Hallo nochmal
Noch eine kurze Frage..
Bisher hatte ich die Spalten so:
ISBN Nummer, Link, ID, Autor, Titel, Datum, Preis Neu, Preis Gebraucht
Jetzt wollte ich die ID vor die ISBN Nummer und den Link setzen. Also so:
Buch-ID, ISBN, Link, Autor, Titel, Datum, Preis Neu, Preis Gebraucht
Wenn ich das allerdings so verschiebe dann funktioniert das Skript nicht mehr... es werden einfach keine Daten eingetragen, dabei hat sich doch nichts geändert.
Muss man das Skript da anpassen? Wenn ja wäre das das einzige was ich momentan noch bräuchte. Wobei ich es ehrlich gesagt nicht verstehe, da die Daten ja immer noch in die selben Zeilen geschrieben werden...
Gruß
Melissa

Anzeige
AW: Excel/VBA Webabfrage
28.08.2014 11:16:07
fcs
Hallo Melissa,
wenn du die Reihenfolge der Spalten A bis C änderst, dann ändert sich schon etwas.
Das Makro liest aus Spalte A die ISBN-Nr. aus, um daraus dann den Link zu berechnen.
Wenn die ISBN-Nr. jetzt in Spalte in Spalte B steht, dann musst du die folgenden 2 Zeilen anpassen.
   For Zeile = varZeile To Cells(Rows.Count, 2).End(xlUp).Row
MyISBN = Cells(Zeile, 2).Text

Gruß
Franz

Anzeige
AW: Excel/VBA Webabfrage
29.08.2014 11:04:37
Melissa
Hallo Franz,
Ja das ganze klingt logisch, wenn man es jetzt weiß. :-)
Ich bin gerade dabei den kompletten Quelltext zu verstehen. Bisher klappt das ganz gut, aber ich finde einfach keine richtig genaue Erklärung zu folgendem:
Dim i As Long, Zeile As Long
Dim MyUrl As String
Dim Itext Ss String
Dim MyISBN As String
Dim IEApp As Object
Dim IEDocument As Object
Dim strTitel As String, strAutor As String, strPreis, varDatum, varZeile
Die folgenden Begriffe verstehe ich ohne Probleme:
Dim, As Long, as String und as Object
Die Namen der einzelnen Variablen sind dann wahrscheinlich i, Itext MyUrl, MyISBN, IEApp, IEDocument, strTitel und so weiter. Jetzt frage ich mich nur ob das von dir festgelegte Namen sind oder ob die zwingend so heißen müssen und was sie genau bedeuten.
Itext ist wahrscheinlich der Text von der Webseite oder?
MyUrl ist die URL welche eingetragen ist also die die zu Amazon führt
MyISBN ist die ISBN Nummer welche eingetragen wird
IeApp bedeutet, dass der Internet Explorer geöffnet wird um dort die Daten rauszuholen
IeDocument weiß ich leider nicht.
Die restlichen Sachen ergeben sich ja bis auf varZeile (siehe unten)
Und das was ich garnicht verstehe ist: Zeile as Long und varZeile. Was genau bedeutet das?

Anzeige
AW: Excel/VBA Webabfrage
29.08.2014 12:52:31
fcs
Hallo Melissa,
mit den Dim-Anweisungen werden Variablen deklariert.
siehe auch VBA-Hilfe unter "Deklarieren von Variablen"
Ohne As .... hat eine Variable den Type Variant und man kann ihr beliebige Werte oder Objekte zuweisen.
Mit Varaible As ... wird der Variablen ein Typ zugewiesen und man kann ihr nur noch entsprechende Daten zuweisen bzw. es findet eine Wertkonversion in den Typ statt
Einer Variablen vom Typ Long kann man keinen Text zuweisen.
Mit einer Variablen vom Typ String kann man im Allgemeinen keine Rechenoperationen durchführen.
Variablen vom Typ Object muss man in einer Set-Anweisung ein Objekt zuweisen.
Die Namen der Variablen kann man beliebig wählen, man sollte allerdings keine VBA-Schlüsselwörter als Variablennamen verwenden (z.B. Name, Value, Text oder andere). Ich versuche bei den Varaiblennamen möglichs den Verwendungszweck zu berücksichtigen oder auch durch vorangestellte Zeichen, wie var=Variant, str=String, int=Ineger etc., den Variablentyp im Namen zu berücksichtigen. Das Klappt nicht immer und in deinem Code gibt es ja auch noch die Festlegungen des ursprünglichen Verfassers.
In Verbindung mit der Zeile
Option Explicit
als 1. Zeile in einem Code-Modul ist die Variablendeklaration hilfreich bei der Fehlersuche. Schreibfehler werden leichter Erkannt.
Bei Ojektvariablen, die man ja auch als As Worksheet oder As Range deklarieren kann, hat man den Vorteil, dass im VBA-Editor bei Eingabe des Punktes nach der Variablen die möglichen Methoden und Eigenschaften zur Auswahl angezeigt werden.
IeApp bedeutet, dass der Internet Explorer geöffnet wird um dort die Daten rauszuholen
IeApp ist eine Variable, der in der Set-Anweisunge der nackte Internetexplorer durch die CreateObject(...)-Anweisung zugewiesen wird.
In den nachfolgenden Zeilen wird der IE dann mit Leben gefüllt (sichtbar machen, Seite ansteuern)
IeDocument weiß ich leider nicht.
mit
Set IEDocument = IEApp.Document
wird der Variablen das zur Zeit im IE angezeigte Dokument zugewiesen.
In den nachfolgenden Zeilen wird dann eine bestimmte Eigenschaft (body.innertext) des Dokuments ausgelesen.
Und das was ich garnicht verstehe ist: Zeile as Long und varZeile. Was genau bedeutet das?
Zeile as Long ist eine explizite Variablendeklaration
varZeile ist eine Varaiablendeklarion ohne Typzuweisung
Warum ich das so gemacht hab weiss ich nicht genau. Wahrscheinlich wusste ich noch nicht genau, wie ich die StartZeile der Schleife vorgeben wollte (InputBox oder Application.Inputbox). Da hab ich den Typ erst einmal offen gelassen.
Ich hofe, das hilft weiter.
Gruß
Franz

Anzeige
AW: Excel/VBA Webabfrage
29.08.2014 13:37:00
Melissa
Hallo,
ja das hilft mir auf jeden Fall weiter beim Verstehen des Quellcodes :-)
Danke Dir, dass wars für heute erst mal :D

AW: Excel/VBA Webabfrage
29.08.2014 15:27:57
Melissa
Jetzt habe ich noch eine andere Frage.
Kennst du dich auch mit dem Import per VBA aus? Also wenn ich diese Excel Liste in Access importieren möchte per VBA?
Wollte das eigentlich über die normale Importfunktion von Access machen, aber dabei werden 1. die Hyperlinks nicht übernommen und zweitens die Zahlenformate nicht richtig importiert -.-
Die ISBN wird nicht so 9780470009796 angezeigt sondern so 9,78047E+12. Das würde mit VBA wahrscheinlich auch zu beheben sein.
ich weiß allerdings nicht wie aufwendig so ein Import Skript ist.. Ich hab das Gefühl ich hab dir schon zu viel Arbeit gemacht =/
Gruß
Melissa

Anzeige
AW: Excel-Import nach Access inkl. Hyperlinks
30.08.2014 17:24:08
fcs
Hallo Melissa,
ich bin jetzt nicht der große Experte für MS-Access, hab aber mal ein wenig mit Office 2010 professional experimentiert.
Damit der Link in ein Access-Datenfeld übernommen wird sind 2 Bedingungen erforderlich.
1. Das entsprechende Feld muss beim Import bzw. bei der Tabellendefinition als Typ "Hyperlink" definiert werden.
2. Der Text für das Hyperlinkfeld muss in einer bestimmten Form importiert werden und zwar:
Friendly-Name#Link-Adresse#Sub-Adresse
Die # sind dabei das Trennzeichen. Die Sub-Adresse entfällt in deinem Fall.
Beispiel:
Amazon ISBN 9783860634882#http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=9783860634882#
Bleibt die Frage in welcher Spalte der Exceltabelle du die Link-Info für Access aufbereiten willst:
a) in der vorhandenen Link-Spalte - Dann müsste der Excel-Hyperlink anders hergestellt werden
b) in einer zusätzlich Spalte
Problem Zahlenformat:
verwende für alle Spalten -außer für den Link und evtl. die Buch-ID- beim Import für die Felder den Datentyp "Text", dann wird die ISBN korrekt übernommen. Access kann 13-stellige Zahlen nicht als Ganzzahl darstellen und wechselt deshalb in die Exponentialdarstellung.
Ich hab in der folgen ZIP-Datei mal meine Experimete zusamengefasst, da findest du eine Exceldatei mit dem Makro zur Auswertung der Amazon-Links, eine ACCESS-Datenbank (mit Tabelle, Formular, gespeicherter Importdatei) und einer Worddatei mit Anleitung zur Erstellung des Excelimports nach Access.
https://www.herber.de/bbs/user/92398.zip
Gruß
Franz

Anzeige
AW: Excel-Import nach Access inkl. Hyperlinks
01.09.2014 11:17:06
Melissa
Hallo Franz,
coole Sache, werde das ganze später mal auf mein Szenario übertragen und dann berichten. :)
Weiß allerdings noch nicht wann ich dazu kommen werde... Ich melde mich auf jeden Fall nochmal.
Danke nochmals.

AW: Excel-Import nach Access inkl. Hyperlinks
01.09.2014 15:14:23
Melissa
Hallo Franz,
die Anleitung ist wirklich klasse und hat mir sehr geholfen.
Wenn ich das richtig verstanden habe:
Wenn man in der Excel-Liste einen Datensatz hinzufügt und dann in Access über das Formular auf den Button: "Gespeicherten Import ISBN_Links starten" klickt, dann wird die Tabelle automatisch importiert in Access? Richtig?
Das habe ich nun auf meinen Button angewandt und ich bekomme immer die Fehlermeldung:
Laufzeitfehler 3422:
Die Tabellenstruktur kann nicht geändert werden. Ein anderer benutzer hat die Tabelle geöffnet.
Dabei ist weder das Formular geöffnet, noch die Tabelle, noch die Excel-Liste... =/
Eine Idee was der Fehler sein könnte?

Anzeige
AW: Excel-Import nach Access inkl. Hyperlinks
02.09.2014 09:15:47
Melissa
Hallo nochmal,
sorry für meinen dritten Beitrag hintereinander. Habe das Problem nun gelöst. Es hat sich ein Fehler im VBA Code eingeschlichen, daher ging das ganze nicht.
Nun funktioniert alles wunderbar.
Riesen Dank nochmal.
Sollte noch irgendwas sein melde ich mich, aber denke es klappt alles.

Anzeige
AW: Excel-Import nach Access inkl. Hyperlinks
02.09.2014 10:55:18
Melissa
Jetzt ist mir tatsächlich noch was eingefallen bzw. hatte es fast schon vergessen.
In Excel konnte man ja keine Bilder mit anzeigen lassen. Geht das denn jetzt in Access? Also das ich passend zum Hyperlink das Bild von Amazon mit laden kann?
Das hatte ich noch ganz vergessen zu fragen.
;
Anzeige
Anzeige

Infobox / Tutorial

Excel und VBA: Webabfragen für die Amazon ISBN-Suche


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Excel-Tabelle:

    • Erstelle eine Excel-Tabelle mit den Spalten: Buch-ID, ISBN, Link, Autor, Titel, Datum, Preis Neu, Preis Gebraucht.
    • Trage die ISBN-Nummern in die Spalte „ISBN“ ein (B2, B3, etc.).
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.
  3. VBA-Skript einfügen:

    • Kopiere das folgende Skript in das Modul:
    Sub webabfrage()
        Dim i As Long, Zeile As Long
        Dim Itext As String
        Dim MyUrl As String
        Dim MyISBN As String
        Dim IEApp As Object
        Dim IEDocument As Object
        Dim strTitel As String, strAutor As String, strPreis, varDatum, varZeile
    
        On Error GoTo Fehler
        varZeile = Application.InputBox("Startzeile für Einlesen der Links", "Amazon-Links auswerten", ActiveCell.Row, Type:=1)
    
        For Zeile = varZeile To Cells(Rows.Count, 2).End(xlUp).Row
            MyISBN = Cells(Zeile, 2).Text
            MyUrl = "http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=" & MyISBN
    
            Set IEApp = CreateObject("InternetExplorer.Application")
            IEApp.Visible = True
            IEApp.Navigate MyUrl
    
            Do
                DoEvents
            Loop Until IEApp.readyState = 4
    
            Set IEDocument = IEApp.Document
            Itext = IEDocument.body.innertext
            IEApp.Quit
            Set IEApp = Nothing
            Set IEDocument = Nothing
    
            ' Hier die Logik zur Extraktion der Daten
            ' (Titel, Autor, Preis) hier einfügen
    
            Cells(Zeile, 4).Value = strTitel
            Cells(Zeile, 5).Value = strAutor
            Cells(Zeile, 6).Value = varDatum
            Cells(Zeile, 7).Value = strPreis
        Next Zeile
    
    Fehler:
        MsgBox "Fehler beim Auslesen der Daten."
    End Sub
  4. Makro ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Führe das Makro über ALT + F8 aus und wähle webabfrage.

Häufige Fehler und Lösungen

  • Fehler beim Auslesen der Daten:

    • Stelle sicher, dass die Internetverbindung funktioniert und die URL korrekt ist.
  • Daten werden nicht korrekt eingetragen:

    • Überprüfe, ob die Spaltenreihenfolge in der Excel-Tabelle mit dem VBA-Skript übereinstimmt. Ändere die Zeilen im Skript entsprechend, wenn Du die Spalten verschiebst.
  • Leerzeichen im Ergebnis:

    • Um das Problem mit den Leerzeichen zu beheben, kannst Du die Funktion Trim() verwenden, um überflüssige Leerzeichen zu entfernen.

Alternative Methoden

  • Power Query:

    • Anstatt VBA zu verwenden, kannst Du auch Power Query in Excel nutzen, um Daten aus einer Webseite zu importieren. Dies könnte eine einfachere Lösung sein, wenn Du keine Programmierkenntnisse hast.
  • Externe Add-Ins:

    • Es gibt Add-Ins für Excel, die speziell für die Amazon ISBN-Suche entwickelt wurden. Diese können eine benutzerfreundliche Oberfläche bieten.

Praktische Beispiele

  • ISBN-Nummer eingeben:
    • Trage die ISBN-Nummer in Zelle B2 ein und führe das Skript aus. Die passenden Informationen wie Titel, Autor und Preis werden automatisch in den nachfolgenden Zellen eingefügt.
Buch-ID | ISBN         | Link | Autor      | Titel      | Datum     | Preis Neu | Preis Gebraucht
1       | 9783860634882| ...  | Max Mustermann | Cooles Buch | 2021-01-01 | 19,99 € | 10,00 €

Tipps für Profis

  • Fehlerbehandlung:

    • Implementiere eine erweiterte Fehlerbehandlung im Skript, um spezifische Fehler zu erfassen und entsprechende Meldungen auszugeben.
  • Automatisierung:

    • Erstelle einen Button in Excel, der das Makro auf Knopfdruck ausführt, um den Prozess zu vereinfachen.
  • Optimierung der Daten:

    • Füge zusätzliche Logik hinzu, um die Suche nach ISBN zu optimieren und Doppeleinträge zu vermeiden.

FAQ: Häufige Fragen

1. Welche Excel-Version benötige ich für das Skript?

  • Das Skript funktioniert mit Excel 2010 und neueren Versionen.

2. Was kann ich tun, wenn das Skript nicht funktioniert?

  • Überprüfe die URL und die Spaltenreihenfolge in der Excel-Tabelle. Stelle sicher, dass alle erforderlichen Bibliotheken aktiviert sind.

3. Kann ich die Daten auch in Access importieren?

  • Ja, du kannst die Daten aus Excel in Access importieren, indem du sicherstellst, dass die Felder korrekt definiert sind, insbesondere für Hyperlinks.

4. Ist es möglich, die Cover-Bilder in Excel anzuzeigen?

  • Leider ist es nicht möglich, Bilder direkt in Excel über VBA zu importieren, da die Bilder in Access besser verwaltet werden können.

5. Wie kann ich die Suche nach ISBN optimieren?

  • Du kannst die Logik im VBA-Skript anpassen, um gezielter nach den gewünschten Informationen auf der Webseite zu suchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige