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