Как записать в CSV только определенные строки листа Excel?

Я создал книгу 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

спасибо!

24
задан Nate A.
25.01.2023 20:14 Количество просмотров материала 2775
Распечатать страницу

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", затем в скобках. Затем, перед Next lngRow, вставляем эту строку в:

End If

это должно пропускать любые строки с null (nothing) или empty (т. е. только табуляции или пробелы) в первом столбце.

0
отвечен DarkMoon 2023-01-27 04:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

csv
macros
microsoft-excel
microsoft-excel-2010
Вверх