Ir ao conteúdo
  • Cadastre-se

Natan G Martins

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

posts postados por Natan G Martins

  1. Bom dia a todos, estou com o seguinte problema:

    Tenho uma planilha que possui dados a partir da linha 8, fiz uma macro que gera um txt com os dados que estiverem a partir da linha 8 e ela funciona muito bem, porém o txt gerado fica com a ultima linha em branco. Eu gostaria que essa macro deixasse no txt apenas as linhas que possuirem valores.

     

     

    Segue macro

    Sub TXT_Contabil()
    
    Application.ScreenUpdating = False
    
    Dim DIR As String
    Dim UltLin
    Dim i
    Dim LinExp
    Dim Separador As String
    
    'FORMULAS
    Range("A8").Select
       ActiveCell.FormulaR1C1 = "=REPT(""0"",14-LEN(IF(RC[3]="""","""",ROUND(RC[5]*100,0))))&IF(RC[3]="""","""",ROUND(RC[5]*100,0))"
        Range("B8").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(RC[2]="""","""",CONCATENATE(REPT(""0"",2-LEN(DAY(RC[3]))),DAY(RC[3]),REPT(""0"",2-LEN(MONTH(RC[3]))),MONTH(RC[3]),REPT(""0"",4-LEN(YEAR(RC[3]))),YEAR(RC[3])))"
        Range("C8").Select
        ActiveCell.FormulaR1C1 = "=REPT("" "",120-LEN(RC[8]))"
        Range("A8:c8").Select
        Selection.Copy
        Range("d7").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(0, -1).Select
        Range(Selection, Selection.End(xlToLeft)).Select
        Range(Selection, Selection.End(xlUp)).Select
        ActiveSheet.Paste
        
        Range("a7").Select
        ActiveCell.FormulaR1C1 = "VALOR"
        Range("b7").Select
        ActiveCell.FormulaR1C1 = "DATA"
        Range("c7").Select
        ActiveCell.FormulaR1C1 = "ESP. HIST."
        Range("A7:c7").Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.349986266670736
            .PatternTintAndShade = 0
        Selection.Font.Bold = True
        End With
        
    'Ordenar Filial e data
        Range("K8").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToLeft)).Select
        Range(Selection, Selection.End(xlToLeft)).Select
        Range(Selection, Selection.End(xlToLeft)).Select
    '    Range(Selection, Selection.End(xlToLeft)).Select
        
        ActiveWorkbook.Worksheets("Contabil").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Contabil").Sort.SortFields.Add Key:=Range("D8:D1048576" _
            ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Contabil").Sort.SortFields.Add Key:=Range("E8:E1048576" _
            ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Contabil").Sort
            .SetRange Range("A8:k1048576")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        
    'COMEÇO GERAR TXT
    
    'Determina o tamanho da planilha (considerando que a coluna "A" esta preenchida.
    UltLin = Cells(Cells.Rows.Count, "A").End(xlUp).Row
    'Diretorios para salvar a planilha
    DIR = Range("L2") & Range("N4") & Range("M2") & Range("N2")
    Separador = Range("O2")
    
    'Abre o arquivo Saida na "Area de Trabalho" do usuario "Local"
    'Open "C:\txt\001.txt" For Output As #1
    Open DIR For Output As #1
    'Workbooks.OpenText Filename:=( For Output As #1
    
    'Executa um loop da linha 8 até a ultima linha de dados
    
    For i = 8 To UltLin
    ' Monta a linha
    LinExp = Left(Cells(i, 30), 1)  'Matriz
    LinExp = LinExp & "     "           'Espaços iniciais
    LinExp = LinExp & "" & Left(Cells(i, 4), 7) & "008"          'E5_FILIAL
    LinExp = LinExp & Separador & Left(Cells(i, 2), 8)  'E5_DATA
    LinExp = LinExp & Separador & Left(Cells(i, 1), 16) 'E5_VALOR
    
    If Left(Cells(i, 7), 10) = "" Then
    LinExp = LinExp & Separador & "          "   'E5_CONTADEBITO vazia
    Else
    LinExp = LinExp & Separador & Left(Cells(i, 7), 10)   'E5_CONTADEBITO
    End If
    
    If Left(Cells(i, 8), 10) = "" Then
    LinExp = LinExp & Separador & "          "   'E5_CONTACREDITO vazia
    Else
    LinExp = LinExp & Separador & Left(Cells(i, 8), 10)   'E5_CONTACREDITO
    End If
    
    If Left(Cells(i, 9), 9) = "" Then
    LinExp = LinExp & Separador & "         "   'E5_CCD vazio
    Else
    LinExp = LinExp & Separador & Left(Cells(i, 9), 9)   'E5_CCD
    End If
    
    If Left(Cells(i, 10), 9) = "" Then
    LinExp = LinExp & Separador & "         "   'E5_CCC vazio
    Else
    LinExp = LinExp & Separador & Left(Cells(i, 10), 9)   'E5_CCC
    End If
    
    LinExp = LinExp & Separador & Left(Cells(i, 11), 120) & Left(Cells(i, 3), 120) 'E5_HISTOR"
    
    ' Grava a linha no arquivo
    Print #1, LinExp
    
    Next i
    
    'Fecha o arquivo
    Close #1
    
    MsgBox ("Arquivo salvo com sucesso na pasta: " & DIR)
    
    Application.ScreenUpdating = True
    
    End Sub

    AMORT_Distrib Resultado.txt

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!