Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel/VBA Webabfrage

Betrifft: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 25.08.2014 08:44:44

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

  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 25.08.2014 10:16:43

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


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 25.08.2014 10:25:06

Also hier der Link:

https://www.herber.de/forum/archiv/1232to1236/1232500_ISBNZiffern_Infos_aus_dem_Internet.html

Ich denke das Skript trifft es schon fast. Bis darauf das eben die Schleife fehlt und die benötigten Informationen rausgefiltert werden müssen.

Ja das Dokument habe ich nun auch angefügt.
https://www.herber.de/bbs/user/92271.xlsx


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 25.08.2014 13:14:03

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



  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 25.08.2014 13:34:25

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.



Kann man das noch irgendwie verhindern?

Wenn nicht - nicht schlimm, bin wirklich dankbar für dieses Skript welches du geschrieben hast.


Grüße
Melissa


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 25.08.2014 13:58:51

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


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 26.08.2014 07:46:10

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:


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!


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 26.08.2014 08:37:40

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 <= 1 Then Exit Sub
    For Zeile = varZeile 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
           IEApp.Quit
           Set IEApp = Nothing
           Set IEDocument = Nothing
           
       'Text vor Keyword (ISBN in Anführungszeichen) abschneiden
       Itext = Mid(Itext, InStr(1, Itext, """" & MyISBN & """"))
'       Debug.Print Itext
       'Text nach der ")" abschneiden
       Itext = Left(Itext, InStr(1, Itext, ")"))
       '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 InStr(1, Itext, " von ") > 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



  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 26.08.2014 09:12:17

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. (:


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 26.08.2014 10:10:15

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..


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 26.08.2014 11:47:49

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 <= 1 Then Exit Sub
   For Zeile = varZeile 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
          IEApp.Quit
          Set IEApp = Nothing
          Set IEDocument = Nothing
          
      'Text vor Keyword (ISBN in Anführungszeichen) abschneiden
      Itext = Mid(Itext, InStr(1, Itext, """" & MyISBN & """"))
'       Debug.Print Itext
      'Text nach dem Preis abschneiden
      strPreis = ""
      If InStr(1, Itext, "gebraucht (") > 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



  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 28.08.2014 09:13:47

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


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 28.08.2014 09:51:17

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


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 28.08.2014 11:16:07

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


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 29.08.2014 11:04:37

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?


  

Betrifft: AW: Excel/VBA Webabfrage von: fcs
Geschrieben am: 29.08.2014 12:52:31

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


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 29.08.2014 13:37:00

Hallo,

ja das hilft mir auf jeden Fall weiter beim Verstehen des Quellcodes :-)

Danke Dir, dass wars für heute erst mal :D


  

Betrifft: AW: Excel/VBA Webabfrage von: Melissa
Geschrieben am: 29.08.2014 15:27:57

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


  

Betrifft: AW: Excel-Import nach Access inkl. Hyperlinks von: fcs
Geschrieben am: 30.08.2014 17:24:08

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


  

Betrifft: AW: Excel-Import nach Access inkl. Hyperlinks von: Melissa
Geschrieben am: 01.09.2014 11:17:06

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.


  

Betrifft: AW: Excel-Import nach Access inkl. Hyperlinks von: Melissa
Geschrieben am: 01.09.2014 15:14:23

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?


  

Betrifft: AW: Excel-Import nach Access inkl. Hyperlinks von: Melissa
Geschrieben am: 02.09.2014 09:15:47

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.


  

Betrifft: AW: Excel-Import nach Access inkl. Hyperlinks von: Melissa
Geschrieben am: 02.09.2014 10:55:18

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.


 

Beiträge aus den Excel-Beispielen zum Thema "Excel/VBA Webabfrage"