Notifications
Clear all

Copiar banco de dados de várias planilhas

34 Posts
4 Usuários
0 Reactions
5,137 Visualizações
(@felipen_)
Posts: 39
Eminent Member
Topic starter
 

Pessoal, bom dia!

Recentemente construí um relatório em Excel aqui para a empresa onde trabalho, porém falta implementar um item.

Preciso manter este DASHBOARD criado na rede, e dentro desta mesma pasta vou manter vários bancos de dados (várias planilhas), contendo as mesmas colunas do banco de dados do DASHBOARD original.

Criei um botão na aba DASHBOARD, onde ela deverá ter a seguinte função: limpar o banco de dados atual, abrir todos os arquivos .xlsx que estão no mesmo caminho, copiar os dados das colunas A até Q e colar no banco de dados do DASHBOARD principal na aba BANCO DE DADOS.

Segue anexo arquivo de exemplo.

Como eu faço isso?

Agradeço quem puder me ajudar.

 
Postado : 11/06/2018 8:30 am
(@felipen_)
Posts: 39
Eminent Member
Topic starter
 

Wagner, bom dia!

Realizei conforme abaixo, ainda deu o mesmo erro...

Coloquei o comando no lugar errado?

Option Explicit
Global NomeArquivo As String
Sub AtualizarBD()
    Dim UltimaLinha As Long
    
    Application.ScreenUpdating = False
    
    UltimaLinha = Sheets("BANCO DE DADOS").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If UltimaLinha < 2 Then
        UltimaLinha = 2
    Else
        UltimaLinha = UltimaLinha + 1
    End If
    
    'Abir arquivo
    [b][color=#FF0000]Application.DisplayAlerts = False[/color][/b]
    Call AbrirArquivos
    
    Workbooks("Cadastros de materiais não finalizados.xlsm").Activate
    Sheets("DASHBOARD").Select
    Range("A1").Select
    
    MsgBox "Dados copiados com sucesso!", vbDefaultButton1, "CÓPIA DE DADOS"
    Application.ScreenUpdating = True
End Sub
Sub AbrirArquivos()
    '************************************************
    'NECESSITA DA REFERÊNCIA Microsoft Scripting Runtime
    '************************************************
    'Para inserir a referência, vá ao editor do VBA com ALT + F11
    'Acesse o meu Ferramentas/Referências/Microsoft Scripting Runtime/OK
   
    'Declaração de variáveis
    Dim fso As Scripting.FileSystemObject
    Dim fld As Scripting.Folder
    Dim fl As Scripting.File
    Dim strCaminho As String
    Dim PosiçãoPonto As Long
   
    strCaminho = ActiveWorkbook.Path & ""
       
    'Aqui é criado o objeto que comunica com as pastas do computador
    Set fso = CreateObject("Scripting.FileSystemObject")
   
    'Esse objeto executa um método do FileSystemObject
    'para buscar atribuir à variável fld uma pasta
    Set fld = fso.GetFolder(strCaminho)
   
    'Loop em cada elemento (ou seja, arquivo) do caminho desejado:
    For Each fl In fld.Files
        'Verifica se é um arquivo com extensão xlsx
        If Right(fl.Name, 4) = "xlsx" Then
            PosiçãoPonto = InStrRev(fl.Name, ".", , vbTextCompare) - 1
            If Mid(fl.Name, PosiçãoPonto - 9, 10) <> "Finalizado" Then
                Workbooks.Open strCaminho & (fl.Name)
                'Armazena na variável Global o nome do arquivo
                NomeArquivo = fl.Name
                'Chamar a rotina que copia os arquivos
                Call CopiarArquivo
            End If
        End If
    Next
End Sub
Sub CopiarArquivo()
    Dim UltimaLinha As Long
    Dim UltimaLinhaArquivo As Long

    'Copia os dados do arquivo aberto
    UltimaLinhaArquivo = Workbooks(NomeArquivo).ActiveSheet.Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If UltimaLinhaArquivo < 2 Then UltimaLinhaArquivo = 2
    
    Range("A2:B" & UltimaLinhaArquivo).Select
    Selection.Copy
    Windows("Cadastros de materiais não finalizados.xlsm").Activate
    Sheets("BANCO DE DADOS").Select
    
    'Descobre qual é a última linha para poder colar os dados
    UltimaLinha = Sheets("BANCO DE DADOS").Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If UltimaLinha < 2 Then
        UltimaLinha = 2
    Else
        UltimaLinha = UltimaLinha + 1
    End If
    
    'Cola os dados na primeira linha em branco
    Range("A" & UltimaLinha).Select
    ActiveSheet.Paste
    Range("A1").Select
    
    Windows(NomeArquivo).Activate
    Application.CutCopyMode = False
    Range("A1").Select
    'Salva o arquivo
    Workbooks(NomeArquivo).Save
    'Fecha o arquivo
    Workbooks(NomeArquivo).Close
    [b][color=#FF0000]Application.DisplayAlerts = True[/color][/b]
End Sub
 
Postado : 28/06/2018 4:38 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

felipen_,

Bom dia!

Códigos VBA devem ser inseridos no fórum com o uso da ferramenta CODE.

Como eu disse: era uma tentativa. Locais dos comandos estão corretos. Nesse caso, ainda tem outra tentativa: envia um ENTER com o comando Sendkeys. Olhe na ajuda do VBA que é bem didática esse comando.

Se não resolver, então precisa arrumar primeiro esses arquivos que apresentam esse tipo de erro.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 28/06/2018 5:29 am
(@felipen_)
Posts: 39
Eminent Member
Topic starter
 

Wagner, bom dia!

O problema eram estes arquivos mesmo que exibiam aquela mensagem de continuar ou editar vínculos.

Como eu faço para inserir no programa esse comando de Sendkeys? Ou como eu faço para entrar nesta ajuda das macros?

Obrigado!

 
Postado : 28/06/2018 7:20 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

ALT + F11 abre o editor de códigos do VBA. Insira, em qualquer lugar o comando SendKeys. Selecione o comando e tecle F1.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 28/06/2018 7:22 am
Página 3 / 3