Notifications
Clear all

Copiar e colar especial em outra pasta apos a ultima linha

7 Posts
3 Usuários
0 Reactions
1,497 Visualizações
(@fr33m4m)
Posts: 0
New Member
Topic starter
 

Boa tarde amigos!
Tenho uma planilha chamada “plan1-usuario”, que é alimentada por vários usuários cada um Salva com seu nome e faz as suas atualizações , preciso pegar um intervalo de células dessas planilhas e copiar para uma central, unificando assim os dados de todos os usuários, preciso também que esse colar seja o tipo colar especial valores pois algumas células contem formulas que não precisam vim.

Alguém tem um código parecido já tentei alguns e não consigo fazer funcionar

O que tenho que ta chegando mais perto é isso:

Private Sub CommandButton1_Click()

Dim Pasta As String
Dim Arquivo As String

'Seleciona a pasta do Windows onde estão todas as
'pastas de trabalho a serem copiadas
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
Pasta = .SelectedItems(1)
End With

'Armazena o nome do primeiro arquivo (pasta de trabalho) na variável "Arquivo"
Arquivo = Dir(Pasta & "" & "*.xls*")

'Laço para para percorrer todos os arquivos da pasta do windows
Do

'Abre o arquivo
Workbooks.Open (Pasta & "" & Arquivo)

'Copia a região adjacente à celula A3 para a planilha de consolidação
'[c10].CurrentRegion.Copy ThisWorkbook.ActiveSheet.Cells(Cells.Rows.Count, "A").End(xlUp).Offset(1, 0)

'ActiveWorkbook.ActiveSheet.Range("C10:T32000").Copy ThisWorkbook.ActiveSheet.Cells(Cells.Rows.Count, "A3").End(xlUp).Offset(1, 0)

Range("C10:T3200").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ThisWorkbook.ActiveSheet.Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

'Fecha o arquivo
Workbooks(Arquivo).Close False

'Lista o próximo arquivo
Arquivo = Dir
Loop While Arquivo <> ""

Application.CutCopyMode = False

MsgBox "Fim de Execução da Macro"

End Sub

 
Postado : 09/09/2015 12:38 pm
(@messiasmbm)
Posts: 0
New Member
 

Esta planilha que abastece a central fica com os dados ? e na próxima vez que for copiar os arquivos vai copiar novamente os mesmos já copiados anteriormente ...
Sobre o colar especial abra os dois arquivos e abertos grave uma macro e copia com colar especial do jeito que vc quer e copie somente a linha que precise .

 
Postado : 11/09/2015 12:02 am
(@fr33m4m)
Posts: 0
New Member
Topic starter
 

Olá Messias,

A planilha que fica com os dados tem sempre dados diferentes pois todo final de Mês eu copio para outra pasta as planilha e coloco planilhas vazias para os usuários utilizarem.

Sobre fazer via gravação de macro se você verificar o código vai ver que já fiz porem quando coloco o gravado ele sempre cola os registro um por cima do outro nunca cola após a ultima linha preenchida.

Range("C10:T3200").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ThisWorkbook.ActiveSheet.Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

 
Postado : 11/09/2015 6:29 am
(@mprudencio)
Posts: 0
New Member
 

Disponibiliza um modelo do seu arquivo assim fica mais facil ajudar

 
Postado : 11/09/2015 6:54 am
(@fr33m4m)
Posts: 0
New Member
Topic starter
 

MPrudencio, boa tarde!

Segue os modelos:
A copia de glosa é a planilha que vai receber os dados.
A Modelo Copia e uma copia simplificada da que preciso copia, ela tem todos os dados que preciso importar não pude mandar na integra devido a politica da empresa!

 
Postado : 11/09/2015 9:50 am
(@mprudencio)
Posts: 0
New Member
 

Tente esse codigo e execute com as duas planilhas abertas

Cole em um modulo na planilha copia glosa.xlsm

Sub Consolidar()

Application.ScreenUpdating = False

'Local de onde os arquivos serao copiados
'altere o nome entre parenteses para o nome do arquivo correto
'ja que esse é so um exemplo.
Windows("modelo copia.xlsx").Activate
Range("C11").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWindow.SmallScroll ToRight:=-14
Selection.Copy
'Local para onde a copia sera realizada
'altere para o nome correto que esta entre parenteses
Windows("COPIA GLOSA.xlsm").Activate
Range("A1042576").End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A3").Select
'Não esquece que tem que trocar o nome do arquivo aqui tb
'note que é o mesmo de onde se tem o origem dos dados
Windows("modelo copia.xlsx").Activate
Application.CutCopyMode = False
Range("C11").Select
ActiveWorkbook.Save
ActiveWindow.Close
ActiveWorkbook.Save

Application.ScreenUpdating = True
End Sub
e atenção aos comentarios se nao o codigo nao funciona no seu arquivo.

 
Postado : 11/09/2015 11:22 am
(@fr33m4m)
Posts: 0
New Member
Topic starter
 

Bem achei a solução em outro Fórum estou colocando aqui o código final quem sabe não ajuda alguém no futuro.
Desde de já agradeço a ajudo de todos!

Private Sub CommandButton2_Click()

Dim Pasta As String
Dim Arquivo As String
Dim r As Long, rTemp As Long
Dim shPadrao As Worksheet

'Seleciona a pasta do Windows onde estão todas as
'pastas de trabalho a serem copiadas
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
Pasta = .SelectedItems(1)
End With

'Armazena o nome do primeiro arquivo (pasta de trabalho) na variável "Arquivo"
Arquivo = Dir(Pasta & "" & "*.xls*")

Set shPadrao = Sheets("Procolo Geral")

'Laço para para percorrer todos os arquivos da pasta do windows
Do

'Abre o arquivo
Workbooks.Open (Pasta & "" & Arquivo)
DisplayAlerts = True

'Acha a ultima linha utilizada na planilha onde serao colados os dados
r = shPadrao.Cells(Rows.Count, "B").End(xlUp).Row
'Descubro sua quantas linhas ele possui
rTemp = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
'Colo na planilha principal
' ActiveWorkbook.ActiveSheet.Range("C10:T" & rTemp).Copy shPadrao.Range("A" & r + 1)

'Faz a delimitação da faixa de colunas que será copiado e seleciona até ultima linha preenchida e
'cola especial na planilha ativa
Range("C10:T10").Select
Range(Selection, Selection.End(xlDown)).Copy
shPadrao.Range("B" & r + 1).PasteSpecial Paste:=xlValues

shPadrao.Range("U" & r + 1).Value = Arquivo

'Fecha o arquivo
Workbooks(Arquivo).Close False
Application.CutCopyMode = False

'Lista o próximo arquivo
Arquivo = Dir
Loop While Arquivo <> ""
MsgBox "Dados Consolidados"

End Sub

 
Postado : 11/09/2015 12:20 pm