Notifications
Clear all

Texto para Colunas no VBA

3 Posts
3 Usuários
0 Reactions
1,606 Visualizações
(@luisangy)
Posts: 21
Eminent Member
Topic starter
 

Bom dia,

Todos os dias baixo informações nas quais tenho que usar o texto para colunas do excel para delimitar com o caracter especifico "|". Gostaria de fazer isso de forma automática no VBa, criei uma macro porém gostaria de saber se tem uma forma mais simples, pois ficou difícil entender o código:

Selection.TextToColumns Destination:=Range("B11220"), DataType:=xlDelimited _
        , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="|", 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)), TrailingMinusNumbers:=True

Agradeço..

 
Postado : 23/08/2017 7:51 am
leandroxtr
(@leandroxtr)
Posts: 447
Reputable Member
 

Entendi nada..

Se te ajudou, não se esqueça de dar um like na resposta e marcar o tópico como finalizado.

Abraços!
Leandro Cordeiro

 
Postado : 23/08/2017 11:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Quando utiliza o gravador ele mantem todas as opções, e a única coisa que entendi que quer seria uma forma mais simples, mas não detalhou muito, mas se quer somente texto para coluna e o único caracter for o "|", você pode utilizar o SPLIT, na rotina abaixo é mais fácil entender, tirei ela da net, e a mesma utiliza a coluna A a partir da linha 2 em vez de utilizar o "Selection"
Veja se ajuda:

Sub Txt2Col1()
     
    Dim varMyItem As Variant
    Dim lngMyOffset As Long, _
    lngStartRow As Long, _
    lngEndRow As Long
    Dim strMyCol As String
    Dim rngCell As Range
     
    lngStartRow = 2 'Starting row number for the data. Change to suit.
    strMyCol = "A" 'Column containing the data. Change to suit.
     
    Application.ScreenUpdating = False
     
    For Each rngCell In Range(strMyCol & lngStartRow & ":" & strMyCol & Cells(Rows.Count, strMyCol).End(xlUp).Row)
         
        lngMyOffset = 0
         
        For Each varMyItem In Split(rngCell.Value, " | ")
            If lngMyOffset = 0 Then
                rngCell.Offset(0, 1).Value = varMyItem
            ElseIf lngMyOffset = 2 Then
                rngCell.Offset(0, 2).Value = varMyItem
            ElseIf ingMyOffset = 0 Then
                rngCell.Offset(0, 3).Value = varMyItem
            End If
            lngMyOffset = lngMyOffset + 2
        Next varMyItem
         
    Next rngCell
     
    Application.ScreenUpdating = True
     
    MsgBox "Process completed"
     
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/08/2017 1:15 pm