Hi Leute,
Für alle die schnell im out of the Box brauchen um Artikel möglichst automatisch zu Importieren hier nun folgende Möglichkeit mit Excel 2007
Ich habs in excel verfasst weils jeder haben sollte und für jeden umsetzbar ist. das alles schöner ginge mit anderen methoden ist mir klar ich bau selbst grad ein python ding fürn server....
(Annmerkung: ich weis es ginge auch mit mit Pivot und würde ein paar sachen leichter machen aber auch schwerer beim verfolgen von Problemen und schnell anpassen für neue Lieferanten.)
Schritt1:
---------
Wir brauchen unsere Datenquellen.
Das können fix abgelegte Dateien vom Großhändler sein oder direkt Daten aus dem WEb (letzteres is natürlich feiner
Das Beispiel basiert auf XMl Datenimport aus dem Web (bitte entschuldigt das ich hier nicht jeden kleiinen schritt beschreibe wer will kann ja vervollständigen ) -
Wie legen uns in Sheet 1 (nennen wir es Import) die XML Daen übers Web hinenein. Diese trennen wir nun damit wir berechnungen getrennt von der Datenquelle machen.
Schritt2 - Trennen:
---------------------
Am besten mit
=WENN(ISTLEER('Import'!A1); "";'Import'!A1)
Danach zieht ihr die ormel nach rechts soviel spalten lang wie in der datenquelle vorgeben ist (die sollten sich ohnehin nur sehr sehr selten ändern)
lasst es markier und zieht nun alle spalten/formeln bix xxx zeilen.
ihr könnt ruhig (bzw solltet) doppel soviel zeilen nehmen wie zurzeit in der liste des händlers drinnen sind. sollte da was dazu kommen ist es euhc egal. (hier wäre pivot besser aber egal)
Hint: Die wenn abfrage oben falls felder leer sind wir ansonsten eine 0 geschrieben das wollen wir nicht.
Nun können wir in unseren sheet 2 (ich nenne es Work) unser aufbereitung machen
Schritt3 aufbereiten der Daten:
------------------------------------
Hier können wir nun alle funktionen und dinge mit fomeln machen die wir so brauchen von matrixvergleichen, vertten von datensätzen oder splitten bereinigen von textes etc etc
bitte aber immer die wenn formel oben nicht vergessen
ein beispiel
=WENN(ISTLEER('import'!B3);"";WENN(ISTLEER('import'!C3);B3;VERKETTEN(B3;"\n\r";Y3)))
verkettet 2 felder und fügt dazwischen ein \n\r ein (für mysql ein linefeed)
hat den sinn das ich in dem fall den artikeltext in 2 spalte bekomme die aber in meinem fall in eine müssen
anderes beispiel zb die preise kommen in brutto müssen aber netto sein
=WENN(ISTLEER('import'!H2);"";Z2/120*100)
(bei euch natürlich in germanien 119 hehe)
gut wenn soweit alles verschalten und umgestellt ist müssen wirs nur noch sortieren. könnte man auch in diesem worksheet machen der übersichtlichkeithalber hab ichs auf eine 3te gemacht (auch wenn hier die dateigröße um 30% größer wird)
einfach zb
='Work'!D1 etc etc hier eben der reihe nach die felder angeben die da in reihenfolge sein müssen
wenn die zeile 1 mit allen überschriften versehen ist bitte nun alle spalten runterziehen (am besten gleiche größe wie im worksheet)
Schritt4 - Export:
--------------------
Nun zum schwierigen Teil CSV Export.
Excel bietet von haus aus nur die möglichkeit mit speichern als (das gute alte export in file ist weg gibt nimma kommentarlos gestrichen)
Das wollen wir aber auf keinen Fall aus 3 Gründen. Erstens nerft es das ständig warnungen kommen das nicht alles in einer cvs gespeihert wird. 2tens zu mühsam langsam und drittens:
Weil wir unsere "wenn istleer" geschichten gemacht haben um ohne pivot
problemlos auf zusätzliche artikel vorbereitet zu sein steht nun in den Feldern ein Wert mit ""
Exportiert man es nun mit dem Speichern unter habt ihr für all diese felder
;;;;;;;;;;;;;;;;;;;;;;; einträge im cvs unten
daher nun folgendes Macro in VB am besten auf eine Tastenkombination legen
Sub csvfile()
Dim fs As Object, a As Object, i As Integer, s As String, t As String, l As String, mn As String, ws As Worksheet
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\export.txt", True)
Set ws = Worksheets("Export")
ActiveWorkbook.RefreshAll
m = Application.WorksheetFunction.CountIf(ws.Range("A:A"), ("?*"))
For r = 1 To m
s = ""
c = 1
While Not IsEmpty(Cells(r, c))
s = s & Cells(r, c) & ";"
c = c + 1
Wend
a.writeline s 'write line
Next r
End Sub
Erklärung was es genau macht.
Zuerst aktualisiert es alle datenquellen
Danach zählt es alle zeilen der Spalte A (hier meine artikelnummer ohen die gibts eh keinen artikel) die min 2 Zeichen haben
Anschließend schreibt es jede zeile in ein Textfile beginnend mit 1 endet mit anzahl der zeilen die es gefunden hat
Grund für das zählen ist das die funktion Isemtpy formeln mit leeren werten nicht als emtpy annerkennt.
wäre auch nicht sinnvoll da zb eine freie celle (zb gewicht von einem kabel das der hädnler leer gelassen hat) dann nicht exportiert werden würde und smit das ganze cvs zerdeppert
geschriben wir alles in c:\export.txt natürlich nach eigenen wünschen anzupassen.
Ab nun reicht es excel file aufmachen shortcut drücken fürs macro kurz warten und wieder zumachen
file erstellt
Hoff es kann jemand brauchen
Wenn jemand besseren vorschlag hat bitte her damit
Für alle die schnell im out of the Box brauchen um Artikel möglichst automatisch zu Importieren hier nun folgende Möglichkeit mit Excel 2007
Ich habs in excel verfasst weils jeder haben sollte und für jeden umsetzbar ist. das alles schöner ginge mit anderen methoden ist mir klar ich bau selbst grad ein python ding fürn server....
(Annmerkung: ich weis es ginge auch mit mit Pivot und würde ein paar sachen leichter machen aber auch schwerer beim verfolgen von Problemen und schnell anpassen für neue Lieferanten.)
Schritt1:
---------
Wir brauchen unsere Datenquellen.
Das können fix abgelegte Dateien vom Großhändler sein oder direkt Daten aus dem WEb (letzteres is natürlich feiner
Das Beispiel basiert auf XMl Datenimport aus dem Web (bitte entschuldigt das ich hier nicht jeden kleiinen schritt beschreibe wer will kann ja vervollständigen ) -
Wie legen uns in Sheet 1 (nennen wir es Import) die XML Daen übers Web hinenein. Diese trennen wir nun damit wir berechnungen getrennt von der Datenquelle machen.
Schritt2 - Trennen:
---------------------
Am besten mit
=WENN(ISTLEER('Import'!A1); "";'Import'!A1)
Danach zieht ihr die ormel nach rechts soviel spalten lang wie in der datenquelle vorgeben ist (die sollten sich ohnehin nur sehr sehr selten ändern)
lasst es markier und zieht nun alle spalten/formeln bix xxx zeilen.
ihr könnt ruhig (bzw solltet) doppel soviel zeilen nehmen wie zurzeit in der liste des händlers drinnen sind. sollte da was dazu kommen ist es euhc egal. (hier wäre pivot besser aber egal)
Hint: Die wenn abfrage oben falls felder leer sind wir ansonsten eine 0 geschrieben das wollen wir nicht.
Nun können wir in unseren sheet 2 (ich nenne es Work) unser aufbereitung machen
Schritt3 aufbereiten der Daten:
------------------------------------
Hier können wir nun alle funktionen und dinge mit fomeln machen die wir so brauchen von matrixvergleichen, vertten von datensätzen oder splitten bereinigen von textes etc etc
bitte aber immer die wenn formel oben nicht vergessen
ein beispiel
=WENN(ISTLEER('import'!B3);"";WENN(ISTLEER('import'!C3);B3;VERKETTEN(B3;"\n\r";Y3)))
verkettet 2 felder und fügt dazwischen ein \n\r ein (für mysql ein linefeed)
hat den sinn das ich in dem fall den artikeltext in 2 spalte bekomme die aber in meinem fall in eine müssen
anderes beispiel zb die preise kommen in brutto müssen aber netto sein
=WENN(ISTLEER('import'!H2);"";Z2/120*100)
(bei euch natürlich in germanien 119 hehe)
gut wenn soweit alles verschalten und umgestellt ist müssen wirs nur noch sortieren. könnte man auch in diesem worksheet machen der übersichtlichkeithalber hab ichs auf eine 3te gemacht (auch wenn hier die dateigröße um 30% größer wird)
einfach zb
='Work'!D1 etc etc hier eben der reihe nach die felder angeben die da in reihenfolge sein müssen
wenn die zeile 1 mit allen überschriften versehen ist bitte nun alle spalten runterziehen (am besten gleiche größe wie im worksheet)
Schritt4 - Export:
--------------------
Nun zum schwierigen Teil CSV Export.
Excel bietet von haus aus nur die möglichkeit mit speichern als (das gute alte export in file ist weg gibt nimma kommentarlos gestrichen)
Das wollen wir aber auf keinen Fall aus 3 Gründen. Erstens nerft es das ständig warnungen kommen das nicht alles in einer cvs gespeihert wird. 2tens zu mühsam langsam und drittens:
Weil wir unsere "wenn istleer" geschichten gemacht haben um ohne pivot
problemlos auf zusätzliche artikel vorbereitet zu sein steht nun in den Feldern ein Wert mit ""
Exportiert man es nun mit dem Speichern unter habt ihr für all diese felder
;;;;;;;;;;;;;;;;;;;;;;; einträge im cvs unten
daher nun folgendes Macro in VB am besten auf eine Tastenkombination legen
Sub csvfile()
Dim fs As Object, a As Object, i As Integer, s As String, t As String, l As String, mn As String, ws As Worksheet
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\export.txt", True)
Set ws = Worksheets("Export")
ActiveWorkbook.RefreshAll
m = Application.WorksheetFunction.CountIf(ws.Range("A:A"), ("?*"))
For r = 1 To m
s = ""
c = 1
While Not IsEmpty(Cells(r, c))
s = s & Cells(r, c) & ";"
c = c + 1
Wend
a.writeline s 'write line
Next r
End Sub
Erklärung was es genau macht.
Zuerst aktualisiert es alle datenquellen
Danach zählt es alle zeilen der Spalte A (hier meine artikelnummer ohen die gibts eh keinen artikel) die min 2 Zeichen haben
Anschließend schreibt es jede zeile in ein Textfile beginnend mit 1 endet mit anzahl der zeilen die es gefunden hat
Grund für das zählen ist das die funktion Isemtpy formeln mit leeren werten nicht als emtpy annerkennt.
wäre auch nicht sinnvoll da zb eine freie celle (zb gewicht von einem kabel das der hädnler leer gelassen hat) dann nicht exportiert werden würde und smit das ganze cvs zerdeppert
geschriben wir alles in c:\export.txt natürlich nach eigenen wünschen anzupassen.
Ab nun reicht es excel file aufmachen shortcut drücken fürs macro kurz warten und wieder zumachen
file erstellt
Hoff es kann jemand brauchen
Wenn jemand besseren vorschlag hat bitte her damit