Notifications
Clear all

VBA/MACRO txt.

5 Posts
3 Usuários
0 Reactions
1,115 Visualizações
(@wasleyh)
Posts: 0
New Member
Topic starter
 

Ola boa noite

preciso de uma ajuda
pois estou tentando fazer uma planilha usando as funções VBA e MACRO para importação de
arquivo TXT.
ja consegui fazer uma parte so que não consigo dar procedimento pois estou seguindo modelos que estou
achando na internet pois meu conhecimento em VBA/MACRO e bem pouco.

e a VBA/MACRO que estou usando e essa

Sub abrirArquivo()
'
' abrirArquivo Macro
' Macro gravada por wasley
'
MsgBox "Selecione o arquivo txt", vbOKOnly, "Seleção de Arquivo"
'ABRIR arquivo
arquivo = " "
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'
Dim X_Funcionarios_Wasley As Variant
With fd
.AllowMultiSelect = True
If .Show = -1 Then
For Each X_Funcionarios_Wasley In .SelectedItems
arquivo = X_Funcionarios_Wasley

Workbooks.OpenText Filename:="arquivo", Origin:= _
xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _
1), Array(5, 1), Array(6, 1), Array(40, 1), Array(52, 1), Array(65, 1), Array(78, 1), Array( _
91, 1), Array(104, 1), Array(117, 1), Array(130, 1), Array(143, 1), Array(157, 1), Array( _
170, 1), Array(183, 1), Array(196, 1), Array(210, 1), Array(222, 1), Array(235, 1), Array( _
248, 1)), TrailingMinusNumbers:=True

Cells.Select
ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Plan1").Sort.SortFields.Add Key:=Range( _
"A1:A4156"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Plan1").Sort
.SetRange Range("A1:T4156")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select

Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
ActiveWindow.SmallScroll Down:=381
Rows("395:395").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Range("S1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
ActiveWindow.ScrollColumn = 1
Range("A1").Select
ActiveSheet.Paste
Columns("S:S").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select

Next X_Funcionarios_Wasley
End If
End With
Set fd = Nothing

End Sub

algum pode me auxiliar.
pois todo mês tenho que fazer as mesma planilha por isso estou tentando
ganhar tempo deixando automatizada.

 
Postado : 24/10/2016 7:30 pm
(@brunoxro)
Posts: 0
New Member
 

Boa noite wasleyh,

Nesse seu caso eu não acredito que seja necessário você precise criar uma macro, dado que são poucas linhas de informação.

A sequência que utilizei para colocar as informações no txt é a seguinte:
1) Vá em Dados -> Obter Dados Externos -> De Texto
2) Na tela que aparecer, selecione seu arquivo.
3) Marque "Largura fixa" e mude a 'Origem do Arquivo' para "Windows (ANSI) -> Clique em avançar
4) Agora na tela de visualização de dados ajuste os espaço das colunas corretamente. No meu caso só precisei tirar a 'Seta' que separava a palavra HORAS da EXTRAS (clique duas vezes em cima da seta para tirar). Clique em avançar.
5) Selecione "Geral" e clique em Concluir. Marque a célula A1 e clique em OK.

Pronto agora é só formatar as linhas/colunas da forma que deseja apresentar.

att,

 
Postado : 24/10/2016 8:40 pm
(@wasleyh)
Posts: 0
New Member
Topic starter
 

bom dia brunoxro

esse exemplo de txt. e apenas uma demonstração do arquivo que vou trabalhar pois são varias linhas
e todo Mês a mesma coisa
e a unica informação que eu preciso na planilha são os dados do funcionario referente a folha de pagamento as demais
informações que vem no txt não utilizo.

 
Postado : 25/10/2016 5:42 am
(@brunoxro)
Posts: 0
New Member
 

Boa noite Wasleyh,

No caso você pode utilizar o gravador de macro e fazer a sequência que te falei.
Depois que tiver uma macro para coloca os dados no excel pode-se pensar em uma para já trabalhar as informações que você precisa.

att,

 
Postado : 25/10/2016 9:40 pm
(@trindade)
Posts: 0
New Member
 

Boa noite, wasleyh

Segue um exemplo simples de importação de arquivo .txt com separador ";" (ponto e virgula).

Sub Importartxt()

Dim Campos As Variant
Dim Arquivo As String
Dim i As Long, j As Long
            
        Application.ScreenUpdating = False
    
            ' ABRE E IMPORTA O ARQUIVO TEXTO
            Open Arquivo For Input As #1
                
                ' ENQUANTO NAO CHEGA AO FIM DO ARQUIVO
                While Not (EOF(1))
                    
                    ' CAPTURA 1 LINHA E ARMAZENA NA VARIAVEL LINHA
                    Line Input #1, Linha
                    
                    ' SEPARA OS CAMPOS E ARMAZENA NA VARIAVEL "CAMPOS"
                    Campos = Split(Linha, ";")
                    
                    ' DISTRIBUI OS CAMPOS NA PLANILHA
                    For j = 0 To UBound(Campos)
                        Plan1.Cells(i, j + 27).Value = Campos(j)
                    Next
                    
                    ' INCREMENTA UMA LINHA
                    i = i + 1
                    
                Wend
                
            ' FECHA O ARQUIVO TEXTO
            Close #1
		
		Application.ScreenUpdating = true
  
End Sub
 
Postado : 25/10/2016 10:25 pm