Clever-Excel-Forum

Normale Version: Erstellung CSV Datei als Makro
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo alle miteinander,

habe das hier gerade schon versucht zu Posten. Hat aber nicht geklappt...

So oft habe ich in Foren dieser Art nach Hilfe gesucht und bin auch bisher immer fündig geworden...
Jetzt brauche ich aber Hilfe.

Info vorweg: Ich habe keine Ahnung von Makros und auch nicht von VBA. Ich kann lediglich einen Makro aufzeichnen.

In Tabelle 4 werden automatisch Daten aus Tabelle 2 erzeugt.
Beduetet, dass in Tabelle 4 überall Formeln hinterlegt sind, von A1 bis J1200.
In Tabelle 4 werden in A1 bis J (mal bis J10 aber auch mal bis J350 oder noch weiter bis J980) unterschiedliche Informationen dargestellt.
Die Spalte A, B und J sind immer mit Daten gefüllt. 

Ich möchte einen Makro haben, der aus dem Tabellenblatt 4 eine gesonderte CSV Datei erstellt.
Diese soll an einem Speicherort (O:\Technik\IMPORTE) abgespeichert werden.
WICHTIG: Es dürfen keine Leerzeilen "mitgenommen" werden.

Bedutet, ab  einer bestimmten Zeile sind überhaupt keine Informationen mehr zu sehen.
Ab dieser Zeile bis 1200 sind nur Formeln vorhanden.
Diese Leerzeilen dürfen nicht in der CSV Datei vorhanden sein.
Denn ich muss das in mein Warenwirtschaftssystem importieren und das geht nur ohne Lerzeilen.

Da es sich hier um eine Importdatei handelt, die ich selber gebastelt habe,
brauche ich ein Makro, der jedes Mal gemäß o.g. Anforderungen eine CSV Datei erstellt.

Sorry, dass ich so viel geschrieben habe.
Hoffe, dass das einigermaßen verständlch war..

Ich füge hier noch ein Bild ein, um das ganze zu veranschaulichen.

Ich wäre euch wirklich dankbar, wenn ihr mir ein MAkro schreiben könntet, dass ich einfach kopieren und einfügen kann.

Vielen Dank im Voraus für eure Hilfe
Hallo,
anstatt des Bildes wäre eine Beipieldatei besser gewesen. Denn Deine Daten tippe ich mit Sicherheit nicht ab.
Ansonsten kann ich Dir sagen wenn man ein Kriterium hat wie eine gültige Zeile erkennbar ist, sollte das kein Problem sein.
Hallo,

... auch ich kann mit einem Bild nichts anfangen.

Was für Werte gibt es unterhalb Deiner Aufstellung? Lassen diese sich woanders hin verschieben?
Hallo jovo,


Zitat:habe das hier gerade schon versucht zu Posten. Hat aber nicht geklappt...

doch, hat es. Du hast es aber (fälschlicherweise) im VBA-Forum gepostet; dort müssen Beiträge erst freigegeben werden. Deinen doppelten Beitrag habe ich ins Archiv verschoben.
Sorry sorry, anbei die Datei.
Hab das nicht drauf...
Vielen Dank für eure Hilfe.
Moin auch von mir!
Es gibt die Range.ExportAsFixedFormat–Methode.
Die Voraussetzung zum Begrenzen des Ranges hast Du nur umschrieben, aber nicht konkretisiert.

Gruß Ralf
Ist sichergestellt, dass Spalte A mit Inkrement 10 ab 10 beginnt?
Dann ermittelst Du die letzte gefüllte Zeile mit =MAX(A:A)/10+1
Moin Ralf,

vielen Dank für deine Antworten.
Bedauerlicherwiese verstehe ich deine Kommentare nicht, wie "Range.ExportAsFixedFormat Method".
Habs gegoogelt, es scheint aber nicht zu helfen.

Zu deiner Frage, wie die Range begrentzt wird.

Die Kunde schicken Anfragen mit immer gleichen Artikelnummern und unterschiedlich vielen Positionen.
Mal sind es 50 Positionen, mal sind es 850 Positionen.
Die Artikelnummern mit den Mengen werden vom Sachbearbeiter in die Tabelle 2 (Bezeichnung Schritt1) eingefügt.
Die Tabelle 4, die ich hier gepostet habe, ist eine Formeltabelle.
Die Spalte A gibt die Positionsnummer in 10er Schritten an.
Hier ist die Formel =WENN(Schritt1!$C266>1;Schritt1!$A266;"")
Bedeutet also, wenn in der Tabelle 2 (Schritt 1) in der Spalte C266 eine Artikelnummer steht, erscheint in A266 die Positionsnummer 2650.
Da in C267 der Tabelle 2 (Schritt 1) keine Artikelnummer steht, erscheint auch in Tabelle 4 in A 267 keine Positionsnummer.
Bedutet, dass die CSV Datei nur von A1 bis J266 gehen darf.


Hoffe das war einigermaßen verständlich.

Danke im Voraus für deine Hilfe.
Ich glaube jetzt eine Lösung mit der Aufzeichnungsfunktion gefunden zu haben.
Kann bitte jemand sagen, wie ich die automatisierte Bennenung der Datei ändere?

Ich habe den VBA COde hier eingefügt und den entrsprechenden Besztandteil eingefärbt.
Die Datei soll anstatt "Mappe1" immer wie foglt heißen"importdateiheutigesdatumunduhrzeit.csv".
Also zum Beispiel "importdatei091120180955" Bedeutet, dass die Datei am 09.11.2018 um 09:55Uhr erzeugt wurde.

Sub csverzeugen()
'
' csverzeugen Makro
'

'
    ActiveSheet.Range("$A$1:$J$1200").AutoFilter Field:=10, Criteria1:="<>"
    Cells.Select
    Selection.Copy
    Workbooks.Add
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ChDir "O:\Technik\IMPORTE"
    ActiveWorkbook.SaveAs FileName:="O:\Technik\IMPORTE\Mappe1.csv", FileFormat _
        :=xlCSV, CreateBackup:=False
    ActiveWorkbook.Save
    ActiveWindow.Close
    ActiveSheet.Range("$A$1:$J$1200").AutoFilter Field:=10
End Sub
Jetzt habe ich gerade bemerkt, dass die CSV Datei beim ersten abspeichern wie die xls Tabelle in Spalten abgespeichert wird.
Ab dem zweiten Mal mit Kommatas als Trennzeichen in einer Spalte.
Das Format in dem die Daten der CSV Datei in einer Spalte abgespeichert sind und mit Kommatas getrennt, kann ich nicht in mein IT System importieren.

Wie kriege ich es hin, dass die Daten immer in Spalten abgespeichert werden.

Ich hab die zwei CSV Dateien angefügt und sie als "richtig" und "falsch" benannt.
So wie ich das im Editor Modus sehe, beinhaltet die "falsche" das Komma als Trennzeichen und die "richtige" ein Semikolon.

Was kann ich machen, dass die CSV Datei immer richtig abgespeichert wird.

(ich arbeite mit Excel auf einem Servcer. Länderienstellungen und Co. kann und darf ich nicht ändern)
Seiten: 1 2