Wie kann ich nur bestimmte Zeilen eines Excel-Arbeitsblatts in CSV schreiben?


1

Ich habe eine Excel-Arbeitsmappe (2010) erstellt, in der Informationen aus verschiedenen CSV-Dateien in ein Format konvertiert werden, das für das Planungsprogramm meines Büros verständlich ist. Mit einem Makro, das ich online gefunden habe, kann ich jedes Blatt der Arbeitsmappe als separate CSV-Datei speichern und importieren.

Das Problem besteht darin, dass viele Zeilen der Arbeitsmappe notwendigerweise keine Informationen enthalten, da jede Zeile einem Zeitblock gewidmet ist, der geplant werden kann oder nicht. Diese mit Nullen gefüllten Zeilen führen dazu, dass das Scheduler-Programm Fehler ausspuckt. Dies ist kein schwerwiegendes Problem, da immer noch "gute" Zeitplaneinträge importiert werden. Dies bedeutet jedoch, dass ich Hunderte von erwarteten Fehlern durchlaufen muss, um tatsächliche Fehler zu finden .

Ich habe mich gefragt, ob es eine Möglichkeit gibt, nur bestimmte Zeilen eines Blatts in CSV zu exportieren - zum Beispiel jede Zeile, in der der Inhalt von Spalte A ungleich Null ist.

Als Referenz ist hier das Makro, mit dem ich momentan die Arbeitsblätter in separate CSV-Dateien umwandle.

Option Explicit
Public Sub WriteCSV()

    Dim iFile As Integer
    Dim strText As String, strFileName As String
    Dim lngCol As Long, lngRow As Long
    Dim wks As Worksheet

    iFile = FreeFile()

    For Each wks In ActiveWorkbook.Worksheets
        If wks.Visible = xlSheetVisible Then
            strFileName = ActiveWorkbook.Path & "\" & wks.Name & ".csv"
            Open strFileName For Output As #iFile
                For lngRow = 1 To wks.UsedRange.Rows.Count
                    For lngCol = 1 To wks.UsedRange.Columns.Count
                        Print #iFile, wks.Cells(lngRow, lngCol).Text & ",";
                    Next lngCol
                        Print #iFile,
                Next lngRow
            Close #iFile
        End If
    Next wks

End Sub

Vielen Dank!

Antworten:


0

Danach For lngRow = 1 to wks.UsedRange.Rows.Countfügen Sie diese Zeile hinzu:

If Not IsNull(wks.Cells(l, 1).Value) And Trim(wks.Cells(l, 1).Value) <> "" Then

Beachten Sie, dass sich in der Klammer ein kleines "L" und dann eine Nummer eins befindet. Dann, bevor Next lngRow, setzen Sie diese Zeile in:

End If

Das sollte alle Zeilen mit entweder null (nichts) oder leer (dh nur Tabulatoren oder Leerzeichen) in der ersten Spalte überspringen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.