bluemchen
Goto Top

Excel alle Zellen einer Spalte in separate Textdateien exportieren

Hallo,
ich möchte alle Zellen einer Spalte (Excel-Dokument) in separate .txt-Dateien exportieren.

das Dokument enthält A1 bis A 23567 Zeilen. Es sollen also 23567 .txt-Dateien mit jeweils dem Inhalt einer Zelle entstehen.

Ich habe dafür folgendes Script verwendet:

Sub ErstelleDateien()
Ziel = "D:\Mein Ordner"
Stellen = 3
Typ = ".txt"
AbZeile = 1
Spalte = "F"
Zeile = AbZeile
Nr = 1000001
Set fso = CreateObject("Scripting.FileSystemObject")
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\"
Do While Cells(Zeile, Spalte).Value <> ""
fso.CreateTextFile(Ziel & Right(Nr, Stellen) & Typ).Write Cells(Zeile, Spalte).Value
Zeile = Zeile + 1
Nr = Nr + 1
Loop
End Sub

Leider erhalte ich damit nur die ersten 71 Dateien.
Kenne mich mit dem Thema nicht aus und weiss deshalb nicht, ob es sich um ein Kapazitätsproblem handelt (=es können nur 71 Dateien auf einmal ausgelesen werden) oder ob es am verwendeten Script liegt.

Kann mir jemand helfen?

Viele Grüße
Blümchen

Content-Key: 147820

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

Ausgedruckt am: 28.03.2024 um 19:03 Uhr

Mitglied: TsukiSan
TsukiSan 28.07.2010 um 13:12:43 Uhr
Goto Top
Hallo blümchen,

was steht denn in Zelle 72 drinnen?
Etwa:

Do While Cells(Zeile, Spalte).Value <> ""   

Dann macht dein Excel es richtig.

Gruss
Tsuki
Mitglied: EffEins
EffEins 28.07.2010 um 13:23:02 Uhr
Goto Top
Und wenn das richtig ist, dass es auch Leerzellen gibt, dann ändere die Do-While-Schleife.

 
For i = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
.......
Next i


gruß f1
Mitglied: bastla
bastla 28.07.2010 um 18:12:28 Uhr
Goto Top
... und im allerschlimmsten Fall die Zeilen (unelegant) konkret angeben:
Sub ErstelleDateien()
Ziel = "D:\Mein Ordner"  
Stellen = 5
Typ = ".txt"  
VonZeile = 1
BisZeile = 23567
Spalte = "F"  

Nr = 1000001
Set fso = CreateObject("Scripting.FileSystemObject")  
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\"  

For Zeile = VonZeile To BisZeile
    fso.CreateTextFile(Ziel & Right(Nr, Stellen) & Typ).Write Cells(Zeile, Spalte).Value
    Nr = Nr + 1
Next
End Sub
Die Stellenanzahl (für die laufende Nummer) habe ich (passend zu Deiner Vorgabe) auf 5 erhöht ...

Falls Du übrigens, wie oben beschrieben, die Zellen aus Spalte "A" verarbeiten willst, solltest Du die Zeile 7 nochmals überdenken ... face-wink

Grüße
bastla

P.S.: Ehe ich's noch ganz vergesse: Willkommen im Forum, bluemchen!