Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

WEB-Import

WEB-Import
12.10.2013 10:54:38
Oberschlumpf
Hallo Leute
Ich brauch bitte eure Hilfe bei diesem Problem:
Ich will per WEB-Import bestimmte Daten von Seiten in unserem Intranet importieren.
Ich starte den WEB-Import-Assistenten, stelle alles so ein wie ich es haben will, wähle als Ziel A1 aus und klick auf OK.
Es werden aber leider nur die Daten importiert, die auf der Intranetseite als Feldüberschrift gelten, z Bsp "Seriennummer", "Inventarnummer" usw...
Aber die Daten, die dann wirklich den Wert darstellen, werden nicht übertragen :-(
Hab schon viel versucht, aber noch nicht den richtigen Schalter gefunden.
Könnt ihr mir verraten, warum nur die Feldüberschriften aber nicht die eigentlichen Daten übertragen werden?
Und könnt ihr mir verraten, was ich tun muss, um doch alles importieren zu können?
Danke + Tschüss
Thorsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: WEB-Import
13.10.2013 17:43:17
Martin
Hallo Thorsten,
bei Level "VBA gut" ist ein Blick in das Archiv angebracht, denn dort werden zahlreiche Treffer zum Import von Daten aus dem Internet angeboten. Ich empfehle einen Datenimport via MS Internet Explorer, da der Internet Explorer sehr gut mit VBA über die Objektbibliothek angesteuert werden kann.
Stickworte: "innerhtml" oder "outerhtml"
Viel mehr Informationen kann ich dir bei deinen Angaben leider nicht geben.
Viele Grüße
Martin

AW: WEB-Import
13.10.2013 23:09:08
Oberschlumpf
Hi Martin,
danke für die Antwort.
es geht nicht darum, WIE werden Daten aus dem Inet importiert. Das kann ich problemlos. Importiere z Bsp gespeicherte eBay-Beobachtungen, dessen Termineinträge vollautomatisch ins Outlook übertragen werden. Is für mich ne sehr große Erleichterung.
Es geht darum, dass ich noch nicht verstehe, wieso bei einem WEB-Import nur ein Teil der Daten nach Excel übertragen wird - und natürlich der Teil, der für mich uninteressant ist.
Ja, du hast recht, ich hätte im Archiv suchen sollen. Zum Zeitpunkt meiner Fragestellung hatte ich andere Stellen des Inets nach Lösungen "abgegrast". Mein Kopf war dann nicht mehr aufnahmefähig - deswegen ja meine Frage um Hilfe - hoffe, du verzeihst mir, dass ich das Archiv vernachlässigt hatte.
Ich hatte gerad eben im Archiv gesucht, aber leider auch noch nichts Hilfreiches für mich gefunden.
Deinen Vorschlag mit Datenimport via MS IE werde ich mal verfolgen.
Ich finds zwar nicht soooo gut, extra n IE-Objekt einzubinden, aber wenns gar nicht anders geht, und ich damit Erfolg habe, dann ok.
Ja, und mehr Infos werde ich leider auch nicht liefern können.
Ich bin ja selbst ein Beschreier, wenns darum geht, dass Bsp-Dateien fehlen.
Würde ich gern liefern.
Da es sich aber um unser Firmen-Intranet handelt, würdest du eh nix sehen können, wenn ich dir den Link zeigen würde.
Ich freue mich trotzdem über weitere Ideen von jedem.
Danke + Tschüss
Thorsten

Anzeige
AW: WEB-Import
14.10.2013 19:55:28
Martin
Hallo Thorsten,
ehrlich gesagt finde ich eine Quellcode-Auswertung besonders gut und schnell. Ich persönlich bevorzuge dazu sogar eine ganz spezielle Variante ohne Internet Explorer, aber da steht dir dann wirklich nur der reine HTML-Quellcode zur Verfügung. Dafür geht das aber besonders schnell:
http://www.4guysfromrolla.com/webtech/110100-1.shtml
Aber bei deinem Vorhaben ist die Verwendung des MS IE vermutlich effektiver. Dir ist hoffentlich klar, dass du direkt HTML-Tabellen mit "nodeName" filtern kannst:
Sub Tabelle_auslesen1()
Dim IEApp As Object, i As Long, j As Long, l As Long
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "http://anmeldung.springer-sport.de/borkheide-challenge/Meldeliste.asp"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
With IEApp.document
For i = 0 To .All.Length - 1
If .All.Item(i).nodeName = "TABLE" Then
For j = 0 To .All.Item(i).Rows.Length - 1 'Zeilen zählen
For l = 0 To .All.Item(i).Rows(j).Cells.Length - 1 'Spalten zählen
Debug.Print i & ": (" & j & ", " & l; "): " & .All.Item(i).Rows(j). _
Cells(l).innerText
Next l
Next j
End If
Next i
End With
IEApp.Quit
End Sub
Statt "Debug.Print" kann die Tabelle in ein Array übertragen und total einfach mit Range("A1").Resize in eine Tabelle übertragen werden. Ich bevorzuge es ohnehin, wenn nur der reine Text übertragen wird (also ohne alle möglichen Formatierungen).
Viele Grüße
Martin

Anzeige
ne gute + ne schlechte Nachricht
14.10.2013 23:32:48
Oberschlumpf
Hi Martin!
die gute Nachricht:
WOW! Cool! Danke schön für das Codebeispiel. Mal sehen, ob ich es so übernehmen kann. In der Zeile ...Navigate trage ich unsere Intranetseite(n) ein. Mal sehen, was passiert.
die schlechte Nachricht:
Ich bin leider krank geworden und für den Rest der Woche zu Hause :-(
So werde ich deinen Code leider erst frühestens nächsten Montag testen können :-(
Denn auch ich sehe hier zu hause ja leider das Firmenintranet nicht.
Werde mich auf jeden Fall melden!
Tschüss erst mal
Thorsten

AW: ne gute + ne schlechte Nachricht
15.10.2013 08:00:02
Martin
Hallo Thorsten,
na dann willkommen im Club, denn ich bin seit gestern auch krank. Ich wünsche dir eine gute & schnelle Genesung. Ich bin kommende Woche von Montag bis Mittwoch unterwegs und daher leider offline. Darum poste ich dir mal ein direktes Beispiel mit dem Array. Dass in meinem Fall die richte Tabelle i = 15 ist, habe ich durch meinen ersten geposteten Code im Direktfenster ermittelt.
Sub Tabelle_auslesen2()
Dim IEApp As Object, i As Long, j As Long, l As Long
Set IEApp = CreateObject("InternetExplorer.Application")
Dim arrTable() As Variant
IEApp.Visible = True
IEApp.navigate "http://anmeldung.springer-sport.de/borkheide-challenge/Meldeliste.asp"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
With IEApp.document
For i = 0 To .All.Length - 1
If .All.Item(i).nodeName = "TABLE" Then
For j = 0 To .All.Item(i).Rows.Length - 1               'Zeilen zählen
For l = 0 To .All.Item(i).Rows(j).Cells.Length - 1  'Spalten zählen
If i = 15 Then
If j = 0 And l = 0 Then
ReDim arrTable(0 To .All.Item(i).Rows.Length - 1, 0 To .All. _
Item(i).Rows(j).Cells.Length - 1)
End If
arrTable(j, l) = .All.Item(i).Rows(j).Cells(l).innerText
End If
Next l
Next j
End If
Next i
End With
IEApp.Quit
Range("A1").Resize(UBound(arrTable, 1) + 1, UBound(arrTable, 2) + 1) = arrTable()
ActiveSheet.UsedRange.Columns.AutoFit
End Sub
Viele Grüße
Martin

Anzeige
Richtige Tabelle per Zellinhalt ermitteln
15.10.2013 08:12:57
Martin
Hallo Thorsten,
mein nachfolgendes Beispiel ist noch etwas besser, denn da musst du theoretisch nur den Inhalt der obersten linken Zelle deiner Tabelle abfragen. Außerdem frage ich die richtige Tablle jetzt etwas früher ab, dadurch ist der nachfolgende Code noch etwas effizienter:
Sub Tabelle_auslesen3()
Dim IEApp As Object, i As Long, j As Long, l As Long
Set IEApp = CreateObject("InternetExplorer.Application")
Dim arrTable() As Variant
IEApp.Visible = True
IEApp.navigate "http://anmeldung.springer-sport.de/borkheide-challenge/Meldeliste.asp"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
With IEApp.document
For i = 0 To .All.Length - 1
If .All.Item(i).nodeName = "TABLE" Then
If .All.Item(i).Rows(0).Cells(0).innerText = "Nachname " Then 'Inhalt der  _
ersten Zelle
For j = 0 To .All.Item(i).Rows.Length - 1               'Zeilen zählen
For l = 0 To .All.Item(i).Rows(j).Cells.Length - 1  'Spalten zählen
If j = 0 And l = 0 Then
ReDim arrTable(0 To .All.Item(i).Rows.Length - 1, 0 To .All. _
Item(i).Rows(j).Cells.Length - 1)
End If
arrTable(j, l) = .All.Item(i).Rows(j).Cells(l).innerText
Next l
Next j
End If
End If
Next i
End With
IEApp.Quit
Range("A1").Resize(UBound(arrTable, 1) + 1, UBound(arrTable, 2) + 1) = arrTable()
ActiveSheet.UsedRange.Columns.AutoFit
End Sub
Na dann, viel Erfolg!
Viele Grüße
Martin

Anzeige
AW: Richtige Tabelle per Zellinhalt ermitteln
15.10.2013 08:50:18
Oberschlumpf
Hi Martin
uih uih...danke + auch für dich schnelle gute Besserung!
Und natürlich danke für die weiteren Codes. Ich werde sie auf jeden Fall testen, sobald ich wieder fit bin!
Ciao erst mal
Thorsten

ne andere Frage
18.10.2013 08:32:25
Oberschlumpf
Hi Leute
Wie komme ich an den direkten Link zu diesem Thread im Archiv?
Wenn ich auf oben den Button "Zum Archivthread" klicke, wird der Eintrag zwar im Archiv angezeigt, aber...
1) auf den obigen Button kann ich nur klicken, solange mein Beitrag noch im Forum angezeigt wird
2) wird in der Adresszeile nur "https://www.herber.de/forum" angezeigt
3) hilft mir 2) nicht, da ich ja den direkten Link benötige, um auch noch dann auf diesen Beitrag zugreifen zu können, sobald er im Archiv "verschwunden" ist.
Danke für eure Hilfe
Ciao
Thorsten
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige