如何才能将 Excel 工作表的某些行写入 CSV?

如何才能将 Excel 工作表的某些行写入 CSV?

我创建了一个 Excel (2010) 工作簿,它从各种 CSV 文件中获取信息,并将其转换为我办公室的调度程序可以理解的格式。使用我在网上找到的宏,我可以将工作簿的每个工作表保存为单独的 CSV 文件,以备导入。

问题是,工作簿的许多行必然是空的,因为每一行都用于一段可能安排也可能不安排的时间段。这些用零填充的行会导致调度程序吐出错误。这不是一个致命的问题,因为“好的”调度条目仍然被导入,但这意味着我必须仔细检查数百个预期的错误才能找到实际的错误。

我想知道是否有办法将工作表的某些行仅导出为 CSV - 例如,A 列内容非零的每一行。

作为参考,这是我当前用来将工作表转换为单独的 CSV 文件的宏。

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

谢谢!

答案1

之后For lngRow = 1 to wks.UsedRange.Rows.Count,添加以下行:

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

请注意,括号中有一个小写的“L”,然后是数字 1。然后,在 之前Next lngRow,输入以下行:

End If

这应该跳过第一列中任何为空(无)或为空(即,只有制表符或空格)的行。

相关内容