Notifications
Clear all

Entrar em planilhas, editar e copiar dados pro BD

3 Posts
2 Usuários
0 Reactions
1,118 Visualizações
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

Pessoal, boa tarde

eu sou bastante leigo quanto ao VBA, mas me aventuro a tentar fazer algumas coisas para otimizar tempo.

É o seguinte:
1) entrar numa pasta na rede;
2) Abrir cada arquivo da pasta;
3) fazer edições de formatação (já possui o código redondo);
4) inserir uma coluna no final mesmo e por nessa coluna, em cada linha, o nome do arquivo (que geralmente é a data nesse formato "20170620") anomêsdia)
5) copiar da segunda linha (A2) até a ultima linha (função para buscar ultima linha preenchida) e colar em outra planilha na aba "BD" (que é o banco de dados e onde ficará todo código) na primeira célula VAZIA. Rodarei a Macro 1x por semana.

Alguem tem uma ideia de como rodar isso?
.

 
Postado : 20/06/2017 12:45 pm
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Sim é possível.

Anexe uma planilha de exemplo, com a estrutura do que deve ser copiado e como deve ser o arquivo que recebe essas informações. Assim fica mais fácil ajudar.

att,

 
Postado : 20/06/2017 1:47 pm
(@belan_)
Posts: 30
Eminent Member
Topic starter
 

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