254 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Excel-Profis,

in einem Makro sollen aus den Spalte Z + AA + AB die 1. bis letzte beschriebene Zeile in eine CSV-Datei geschrieben werden.

Bis zur Zeile 409 klappt das auch. Alle nachfolgenden werden nicht in die CSV-Datei geschrieben.

Ich finde den Fehler in meinem Makro nicht. Hat jemand eine Idee?

Sub MinSib_EK_Vorgabe()
'

Dim strBlatt As String
Dim Ausgabepfad As String
Dim Ausgabedatei As String
Dim lngSpalte As Long
Dim lngLetzte As Long
Dim z As Long
Dim Zeile As String
Dim VollZeile As String
Dim Trennzeichen As String

'Bildschirmaktualisierung ausschalten
Application.ScreenUpdating = False

'Variablen festlegen
strBlatt = "MinSib EK-Vorgabe" 'Name des zu exportierenden Arbeitsblattes
Ausgabepfad = "M:\" 'Pfad, in der die Datei exportiert werden soll - anpassen!
Trennzeichen = ";" 'Trennzeichen wird festgelegt

'Ausgabepfad und Dateinamen für Ausgabedatei erstellen - Ausgabename anpassen
Ausgabedatei = Ausgabepfad & "minbestaende_" & Worksheets("Beipackzettel").Range("C4").Value & ".csv"

'letzte Zeile des Tabellenblatts ermitteln
lngLetzte = Worksheets(strBlatt).Cells(Rows.Count, 1).End(xlUp).Row

'Falls Ausgabedatei bereits besteht, wird diese gelöscht
If Dir(Ausgabedatei) <> "" Then Kill (Ausgabedatei)

'Datei Öffnen zur Ausgabe
Open Ausgabedatei For Output As #1

For z = 1 To lngLetzte

'Nur die Spalten Z bis AB werden exportiert
For lngSpalte = 26 To 28
Zeile = Trim(Worksheets(strBlatt).Cells(z, lngSpalte).Text)
Zeile = Replace(Zeile, Trennzeichen, "") 'ggf in Text vorkommendes Trennzeichen wird gelöscht
VollZeile = VollZeile & Zeile & Trennzeichen
Next lngSpalte

'Ausgabe in Datei
VollZeile = Left(VollZeile, Len(VollZeile) - 1) 'Letzten Semicolon abschneiden
If Len(Replace(VollZeile, Trennzeichen, "")) > 0 Then Print #1, VollZeile
VollZeile = ""

Next z

Close #1 'Datei schliessen

'Bildschirmaktualisierung
If Application.Ready Then
Application.ScreenUpdating = True
End If

'Abschlussmeldung
MsgBox "MinSib EK-Vorgabe gespeichert; an REWA denken!", 64
End Sub

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

das könnte daran liegen, dass du die letzte Zeile in Spalte A ermittelst,aber die Spalten Z bis AB noch weitere Zeilen haben.

Falls das so ist, ändere die Zeile
lngLetzte = Worksheets(strBlatt).Cells(Rows.Count, 1).End(xlUp).Row

in
lngLetzte = Worksheets(strBlatt).Cells(Rows.Count, 26).End(xlUp).Row

Ich gehe mal davon aus, dass die zu exportierenden Spalten die gleiche Anzahl von Zeilen haben.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

phantastisch. Wie schon so oft, hast du mir mal wieder geholfen :-).
Tausend Dank dafür.

Colatrinker
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Colatrinker,

wie immer gern geschehen :-).

Gruß

M.O.
...