Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
676to680
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
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenbank aus html-Datei filtern

Datenbank aus html-Datei filtern
04.10.2005 10:44:57
Andreas
Hallo zusammen,
ich bekomme regelmäßig ein Bestellformular meines Lieferanten als HTML-Datei.
Im Bestellformular sind nach einigem Code alle aktuell erhältlichen Artikel im Format:
//------------------------------------------------------------
// Application data - catalog information
//------------------------------------------------------------
var strArtDes = new Array();
var strArtNr = new Array();
var strArtGuelAb = new Array();
var strArtGuelBis = new Array();
strArtNr[0] = "1401";
strArtDes[0] = "Artikelbezeichnung";
strArtGuelAb[0] = "17.12.2002";
strArtGuelBis[0] = "11.11.2999";
strArtNr[1] = "1402";
strArtDes[1] = "Artikelbezeichnung";
strArtGuelAb[1] = "17.12.2002";
strArtGuelBis[1] = "11.11.2999";
usw. enthalten.
Jetzt würde ich gerne per Makro in Excel die Daten in 4 Spalten sortieren und den überflüssigen Code entfernen.
Leider reichen meine VBA-Kenntnisse dazu nicht aus. Kann mir jemand weiterhelfen?
Danke für euer Tipps
Gruß
Andreas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenbank aus html-Datei filtern
04.10.2005 12:20:51
René
versuchs mal so...

Sub Test()
dim i as integer
for i = 2 to letztes elemnt im array
sheets("Name").cells(i,1) = strArtNr(i)
sheets("Name").cells(i,2) = strArtDes(i)
sheets("Name").cells(i,3) = strArtGuelAb(i)
sheets("Name").cells(i,4) = strArtGuelBis(i)
next i
End Sub

lg René
AW: Datenbank aus html-Datei filtern
04.10.2005 14:17:56
ede
hallo,
habe mir mal dein problem angesehen. ich hoffes es richtig verstanden zu haben.
füg mal ein neues modul hinzu und füg nachstehenden code ein. dann makro laufen lassen!

Sub HTML_Import()
'Variable deklarieren
'StartVerzeichnis
ChDrive "c:\"
ChDir "\temp"
'Dialogfenster Öffnen
sFile = Application.GetOpenFilename _
("html-Dateien (*.html), *.html")
If sFile = False Then
GoTo ENDE        'keine Datei ausgewählt, auf Abbrechen geklickt
End If
Open sFile For Input As #1
'neues Tabellenblatt einfügen
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
I = 1
iSpalte = 1
' zeilenweise einlesen
Do Until EOF(1)
Line Input #1, strTXT
If Len(strTXT) = 0 Or Left(strTXT, 2) = "//" Then
'Kommetare/Leerzeleilen überlesen
Else
intPos = InStr(1, strTXT, """") + 1
intRest = Len(strTXT) - intPos - 1
If intPos > 1 Then
If iSpalte = 4 Then
iSpalte = 1
I = I + 1
Else
iSpalte = iSpalte + 1
End If
Cells(I, iSpalte).Value = Mid(strTXT, intPos, intRest)
If I = 65536 Then
' Excel kann nur bis zu dieser Zeile
' MsgBox "Das Ende des Tabellenblattes ist erreicht!"
' neues TabellenBlatt einfügen und weiter gehts!
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
I = 1
iSpalte = 1
Else
'I = I + 1
End If
End If
End If
Loop
ENDE:
Close
End Sub

viel erfolg
rückmeldung wäre nett
Anzeige
AW: Datenbank aus html-Datei filtern
04.10.2005 14:40:04
ede
habe noch einen kleinen fehler gefunden
bitte zeile ändern in
..
iSpalte = 0
..
danke
AW: Datenbank aus html-Datei filtern
04.10.2005 15:59:11
Andreas
Hallo ede,
wo muß ich iSpalte = 0 ändern?
iSpalte kommt 3 mal vor. Hab versucht alle zu ändern, dann bleibt das Skript bei
Cells(i, iSpalte).Value = Mid(strTXT, intPos, intRest)
hängen.
AW: Datenbank aus html-Datei filtern
04.10.2005 16:33:05
ede
hallo
hier:
...
'neues Tabellenblatt einfügen
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
I = 1
iSpalte = 0
' zeilenweise einlesen
Do Until EOF(1)
...
AW: Datenbank aus html-Datei filtern
04.10.2005 16:46:09
ede
bin leider für heute nicht mehr online.
bei problemen morgen nochmal
rückmeldung wäre nett!
Anzeige
AW: Datenbank aus html-Datei filtern
05.10.2005 08:40:18
Andreas
Hallo ede,
Super!! Danke erstmal für Deine Mühe.
Es funzt schon fast perfekt.
Allerdings schreibt das Skript am Anfang noch ca 70 Zeilen aus dem Code, bevor die eigentlichen Daten beginnen.
Was ich Anfangs nicht gesehen hatte ist, dass nach den Daten nochmal einige Zeile Code kommen.
An dieser Stelle bleibt das Skript hängen. Wenn ich den nachfolgenden Code vorher im Editor entferne klappts ohne Probleme.
Ich hab mir die Datei nochmal genau angeschaut.
Die erste Zeile mit Daten beginnt mit "strArtNr", die letzte endet mit "strArtGuelBis".
Diese Strings kommen nur in der Zeile darüber nochmal vor (siehe Beispiel vom Anfang) sonst in der ganzen Datei nicht mehr.
Vielleicht könnte man über diesen Text die Daten besser ausfiltern.
Leider schaff ich das alleine nicht, weil ich die Syntax noch nicht ganz begriffen habe.
Könntes Du mir damit nochmal unter die Arme greifen?
Danke
Andreas
Anzeige
AW: Datenbank aus html-Datei filtern
05.10.2005 12:32:27
ede
hallo,
habe heute wenig zeit, kannst du mal den gesammten anfangtext und endtext aus der html-datei senden.
geht auch, wenn du aus deinem editor den text kopierts und in excel einfügst, dann hier abstellen!
gruss
neuer Quelltext
05.10.2005 13:55:42
ede
habe mal auf die schnelle den code geändert,
dieser liest nur noch zeilen, die mit deinen variablen anfangen!

Sub HTML_Import()
'StartVerzeichnis
ChDrive "c:\"
ChDir "\temp"
'Dialogfenster Öffnen
sFile = Application.GetOpenFilename _
("html-Dateien (*.html), *.html")
If sFile = False Then
GoTo ENDE        'keine Datei ausgewählt, auf Abbrechen geklickt
End If
Open sFile For Input As #1
'neues Tabellenblatt einfügen
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
I = 1
iSpalte = 0
' zeilenweise einlesen
Do Until EOF(1)
Line Input #1, strTXT
If Len(strTXT) = 0 Or Left(strTXT, 2) = "//" Then
'Kommetare/Leerzeleilen überlesen
Else
If Left(strTXT, 8) = "strArtNr" Or _
Left(strTXT, 9) = "strArtDes" Or _
Left(strTXT, 12) = "strArtGuelAb" Or _
Left(strTXT, 13) = "strArtGuelBis" Then
intPos = InStr(1, strTXT, """") + 1
intRest = Len(strTXT) - intPos - 1
If intPos > 1 Then
If iSpalte = 4 Then
iSpalte = 1
I = I + 1
Else
iSpalte = iSpalte + 1
End If
Cells(I, iSpalte).Value = Mid(strTXT, intPos, intRest)
If I = 65536 Then
' Excel kann nur bis zu dieser Zeile
' MsgBox "Das Ende des Tabellenblattes ist erreicht!"
' neues TabellenBlatt einfügen und weiter gehts!
Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
I = 1
iSpalte = 1
Else
'I = I + 1
End If
End If
End If
End If
Loop
ENDE:
Close
End Sub

bitte testen
rückmeldung wäre nett!
Anzeige
AW: neuer Quelltext
05.10.2005 14:39:29
Andreas
Hallo ede,
hab selber heute auch wenig Zeit, deshalb kommt die Rückmeldung so spät.
Inzwischen hab ich die html-Datei vorbereitet (Firmennamen und Adressen überschrieben und die Datensätze auf ein paar wenige reduziert). Wenn ich den Text aus dem Editor in Excel kopiere zeigt Excel immer die Web-Ansicht. Irgendwie krieg ich's nicht als Text rein.
Gibts eine andere Möglichkeit, den Text an Dich zu schicken?
Gruß
bis dann
Andreas

AW: neuer Quelltext
05.10.2005 14:55:39
ede
sende den text an frank.ede@web.de
AW: neuer Quelltext
05.10.2005 14:59:31
Andreas
Hallo ede,
der neue Quelltext funktioniert jetzt tadellos. Hatte ihn zuerst schnell getestet und er lief nicht. Vor den gesuchten Zeilen sind aber jeweils 2 Leerzeichen. Die hab ich in die Abfrage eingebaut, jetzt klappts wunderbar.
If Left(strTXT, 10) = " strArtNr" Or _
Left(strTXT, 11) = " strArtDes" Or _
Left(strTXT, 14) = " strArtGuelAb" Or _
Left(strTXT, 15) = " strArtGuelBis" Then
Vielen Dank für Deine Mühe. Es ist immer wieder toll, wenn man auf diese Art Hilfe bekommt.
Werde das, was ich inzwischen weiss auch entsprechend weiter geben.
Danke nochmal und Gruß
Andreas
Anzeige

232 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige