Tamanho de linha e coluna dinâmicos para o código VBA Texto para Colunas

2

Eu exporto relatórios CSV que geralmente têm cerca de 200 a 5000 linhas ou 30 a 60 colunas. Usando o registro de uma função de macro, gravei uma macro que passa pelo Assistente de texto para colunas, a macro resultante depende do tamanho da linha, como posso corrigir isso?

Sub Macro1()
Range("A1:A2313").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
    (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
    Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
    33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
    Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
    46, 1), Array(47, 1), Array(48, 1)), TrailingMinusNumbers:=True
End Sub
    
por angelofdev 13.07.2018 / 01:55

1 resposta

2

Você pode encontrar o número de linhas com LastRow = ActiveSheet.Cells(ActiveSheet.rows.Count, "A").End(xlUp).row e percorrê-lo com um loop For.

O parâmetro FieldInfo é um parâmetro opcional para que possa ser removido para se assemelhar ao código abaixo.

Sub Text2Column()
'Delimited and Comma Separated

Application.ScreenUpdating = False
LastRow = ActiveSheet.Cells(ActiveSheet.rows.Count, "A").End(xlUp).row
For r = 1 To LastRow
    ActiveSheet.Cells(r, 1).Select
    Selection.TextToColumns Destination:=Range(ActiveSheet.Cells(r, 1), ActiveSheet.Cells(r, 1)), dataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _
    Comma:=True, Space:=False, Other:=False, TrailingMinusNumbers:=True
Next r
Application.ScreenUpdating = True

End Sub
    
por 13.07.2018 / 01:55