Como posso escrever apenas certas linhas de uma planilha do Excel em CSV?

1

Eu criei uma pasta de trabalho do Excel (2010) que coleta informações de vários arquivos CSV e as coloca em um formato que pode ser entendido pelo programa de agendamento do meu escritório. Usando uma macro que encontrei on-line, posso salvar cada folha da pasta de trabalho como um arquivo CSV separado, pronto para importar.

O problema é que muitas linhas da pasta de trabalho são necessariamente vazias de informações, já que cada linha é dedicada a um bloco de tempo que pode ou não ser agendado. Essas linhas preenchidas com zero fazem com que o programa do planejador elimine erros. Esse não é um problema fatal, já que as entradas de programação "boas" ainda são importadas, mas isso significa que tenho que percorrer centenas de erros esperados para encontrar erros reais .

Eu queria saber se havia uma maneira de exportar apenas certas linhas de uma planilha para CSV - por exemplo, todas as linhas nas quais o conteúdo da coluna A é diferente de zero.

Para referência, aqui está a macro que estou usando no momento para transformar as planilhas em arquivos CSV separados.

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

Obrigado!

    
por Nate A. 11.08.2015 / 02:16

1 resposta

0

Após For lngRow = 1 to wks.UsedRange.Rows.Count , adicione esta linha:

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

Observe que há um "L" minúsculo e, em seguida, um número um entre parênteses. Então, antes de Next lngRow , coloque esta linha em:

End If

Isso deve pular todas as linhas com nulo (nada) ou vazio (ou seja, somente guias ou espaços) na primeira coluna.

    
por 11.08.2015 / 04:17