Bom dia Bruno
Então, postei um exemplo da pasta onde existem os arquivos.. como pode ver eu so tenho os dados até o dia tal 07/03/2017.
postei também um exemplo do arquivo onde a macro deve ir até ele, identificar o texto ( só vai importar da linha 3 pra baixo) e excluindo a ultima linha preenchida que faz o somatório das linhas da planilha (essa informação é desnecessária).
Apenas para informar, essa planilha é exportada de um software de um equipamento.. então cada código daquele alí significa uma operação realizada nesse equipamento.. a ideia e gerar um banco de dados e a partir disso ver quantas vezes foi acionada tal função.. e a partir disso melhorar manutenção e tudo mais.
eu to conseguindo através desse código abaixo, porem ele vem zuado, eu tento editar pela macro (delimitação em texto para coluna) mas mesmo assim não fica legal.
Sub Importar_XLS()
Dim sPath As String, sName As String, fName As String
Dim r As Long, rTemp As Long
Dim shPadrao As Worksheet
'Para a macro executar mais rápido!
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
'A planilha onde serão colados os dados
Set shPadrao = Sheets("BD")
'O caminho onde as planilhas que serão lidas estão
sPath = "C:UsersmattheusbelanDesktopDemanda Osiel20173 - MARCH"
'Descubro o nome do primeiro arquivo a ser aberto
sName = Dir(sPath & "*.csv*")
'Faço o loop que le todos os arquivos
Do While sName <> ""
'Acha a ultima linha utilizada na planilha onde serao colados os dados
r = shPadrao.Cells(Rows.Count, "A").End(xlUp).Row
'O caminho + o nome do arquivo a ser aberto
fName = sPath & sName
'Abro o workbook a ser lido
Workbooks.Open Filename:=fName, UpdateLinks:=False
[u] Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
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)), _
TrailingMinusNumbers:=True[/u] - 'aqui tento editar a delimitação de texto em colunas, para separar cada parte em colunas diferentes
'Descubro sua quantas linhas ele possui
rTemp = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
'Colo na planilha principal
ActiveWorkbook.ActiveSheet.Range("A1:J" & rTemp).Copy shPadrao.Range("A" & r + 1)
Cells(Rows.Count, "A").End(xlUp).Select 'aqui tento excluir a ultima linha preenchida em cada planilha que a macro entra para não vir somatório de linhas
Selection.Delete Shift:=xlUp
'Fecho o arquivo já lido
ActiveWorkbook.Close SaveChanges:=False
ScapeB:
'Atualizo a variavel com funcao DIR() que acha o proximo arquivo nao processado
sName = Dir()
Loop
On Error GoTo 0
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
outro problema é que todas as planilhas possui a primeira linha de "legenda", que é: "obj_id ,edit_date ,record_type ,hist_value2 ,description ,type " tudo em uma coluna só.. e ela vem em todas as planilhas repetidas
Alguém pode ajudar?
Obrigado
Postado : 21/06/2017 6:53 am