1

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

0

После 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

Это должно пропускать любые строки с нулевым (ничего) или пустым (т. Е. Только табуляцией или пробелами) в первом столбце.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .