uwe999
Goto Top

Alle Zeilen einer Excel Tabelle als Textdateien speichern

Hallo
Habe folgendes Problem und komme wegen fehlender Kenntnis nicht weiter.

Ich habe eine Excel Datei mit einer Tabelle.
In der Tabelle befinden sind ca. 60 Spalten und ca. 3.500 Zeilen.
In der Regel haben alle Zellen Inhalt,- es kann aber auch ein paar leere Zellen geben.

Ich möchte nun für jede Zeile in der Tabelle eine eigene Textdatei erstellen.
Der Name der Textdatei soll sich jeweils aus den Einträgen der Spalte A bilden (die nie leer ist).
Die jeweiligen Spalten in einer Zeile sollen in der Textdatei mit einem Zeilenumbruch untereinander stehen.

Ich habe ähnliche Beiträge hier im Forum schon gelesen und die dort angebotenen Lösungen auch versucht für mich anzupassen, - es will aber nicht funktionieren.
Mir fehlen einfach die nötigen Kenntnisse.

Hoffe auf Hilfe.
Vielen Dank und viele Grüße

Content-Key: 388802

Url: https://administrator.de/contentid/388802

Printed on: April 19, 2024 at 15:04 o'clock

Member: erikro
erikro Oct 08, 2018 at 15:46:29 (UTC)
Goto Top
Moin,

das würde ich mit einem kleinen Powershellskript erledigen:

$data = import-csv datei.csv -delimiter ";" -encoding utf8 # Der Delimiter muss mit dem übereinstimmen, was die Daten im Datensatz trennt.  

foreach( $dataset in $data) {

out-file $dataset.spalteA -inputObject $($dataset.spalteB + "`n" + $dataset.spalteC +"`n" + $dataset.spalteD ... )  

}

Die Exceltabelle musst Du natürlich vorher als csv exportieren. Das .spalteA .spalteB usw. musst Du durch die Spaltenüberschriften ersetzen. Wenn keine da sind, dann schreibe welche drüber. face-wink Der Punkt zwischen $dataset und der Spalteüberschrift muss sein. Leerzeichen in den Spaltenüberschriften gehen so nicht.

hth

Erik
Mitglied: 137289
Solution 137289 Oct 08, 2018 updated at 16:48:07 (UTC)
Goto Top
Sub Export()
    Const MEINORDNER = "d:\Daten"  
    Set fso = CreateObject("Scripting.FilesystemObject")  
    With ActiveSheet
        for each cell in .Range("A2:A" & .Cells(Rows.Count,"A").End(xlUp).Row)  
            strData = ""  
            for each col in cell.Offset(0,1).Resize(1,60)
                If col.Value <> "" then strData = strData & col.Value & vbNewline  
            Next
            fso.OpenTextfile(MEINORDNER & "\" & cell.Value & ".txt",2, True).WriteLine strData  
        Next
    End with
End Sub
Member: uwe999
uwe999 Oct 09, 2018 at 14:05:42 (UTC)
Goto Top
Hallo 137289
Habe Deine Lösung eben ausprobiert ... keine Fehlermeldung ... und ... 3488 einzelne Dateien im Ordner auf meiner Festplatte face-smile
Vielen Dank !!!
Deine Lösung hat super funktioniert und das Ergebnis ist genau so wie ich es brauche.

Danke für die Hilfe
und liebe Grüsse
Member: uwe999
uwe999 Oct 09, 2018 at 14:18:19 (UTC)
Goto Top
Hallo Erik
Danke für die schnelle Antwort.
Ich habe keine Erfahrung mit PowerShell-Skrips.
Ich habe mich deshalb erst einmal an der Lösung von 137289 versucht,- und diese hat super für mich funktioniert.
Am Wochenende mach ich mich dann mal auf die Suche nach der PowerShell ... dazulernen schadet ja nicht.

Vielen Dank für Deine Lösung
Grüsse
Member: erikro
erikro Oct 09, 2018 at 14:26:47 (UTC)
Goto Top
Moin,

Zitat von @uwe999:
Danke für die schnelle Antwort.

Gerne.

Ich habe keine Erfahrung mit PowerShell-Skrips.

Das solltest Du ändern. Ich habe das als kleines Skript geschrieben, weil das übersichtlicher ist. Im Prinzip geht das auch als Einzeiler.

Ich habe mich deshalb erst einmal an der Lösung von 137289 versucht,- und diese hat super für mich funktioniert.
Am Wochenende mach ich mich dann mal auf die Suche nach der PowerShell ... dazulernen schadet ja nicht.

Dann viel Spaß mit der Powershell. Noch ein Hinweis, weil einen das am Anfang zur Verzweiflung treiben kann. Die PS führt im Standard keine Skripts aus. Weitere Informationen findest Du unter get-executionpolicy und set-executionpolicy.

Liebe Grüße

Erik