Notifications
Clear all

Abrir uma planilha copiar dados e colar em outra planilha

12 Posts
1 Usuários
0 Reactions
3,085 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal bom dia!
Eu tenho uma planilha que uso como formulário (com o nome PAC) e outra planilha que uso como banco de dados (com o nome controle), ou seja que compila os dados do formulário. Estou tentando automatizar a forma de "input" dos dados do formulário no banco de dados. Logo criei um botão com o seguinte código:

Private Sub CommandButton1_Click()
'Ativar a primeira planilha
ThisWorkbook.Worksheets("Controle").Activate
'Selecionar a célula A2
Range("b6").Select

'Procurar o número do PAC
If numpac.Text = "" Then
     MsgBox "Digite o número do PAC!!!"
     numpac.SetFocus
     Exit Sub
End If

With Worksheets("Controle").Range("A:A")
Set c = .Find(numpac.Value, LookIn:=xlValues, LookAt:=xlPart)

If Not c Is Nothing Then
c.Select
ActiveCell.Offset(0, 1).Select
'Solicita o arquivo a ser importado
 Dim Arquivo As String
 Arquivo = Application.GetOpenFilename("(*.xls), *.xls")
 Workbooks.Open Filename:=Arquivo


'Copia e cola as células
Dim data As Date
Dim responsavel As String
Dim cliente As String
Dim contrato As String
Dim pac As Worksheets
Dim controle As Worksheets

For Each pac In ActiveWorkbook.Worksheets

Range("M7:X8").Select.Copy = data
Range("aj7:bf8").Select.Copy = responsavel
Range("m9:bf10").Select.Copy = cliente
Range("m11:ar12").Select.Copy = contrato

Next

For Each controle In ActiveWorkbook.Worksheets

data = ActiveCell.Offset(0, 1).Range("A1").Paste
responsavel = ActiveCell.Offset(0, 1).Range("A1").Paste
cliente = ActiveCell.Offset(0, 1).Range("A1").Paste
contrato = ActiveCell.Offset(0, 1).Range("A1").Paste

Next

MsgBox ("Pac atualizado com sucesso!")
  'fecha o arquivo pac
Workbooks("pac.xls").Close
ThisWorkbook.Worksheets("Menu").Activate
MsgBox ("Pac atualizado com sucesso!")
End If
End With
End Sub

O código pede para escolher o arquivo, eu o seleciono, e clico em abrir porém ele da erro e não copia e cola. O que pode ser feito? Desde já agradeço a ajuda.

 
Postado : 13/07/2012 8:46 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá pessoal, bom dia!
Até agora ninguém sabe uma solução para esse caso??
Agradeço a todos desde já.

 
Postado : 16/07/2012 8:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Existem algumas duvidas quanto ao codigo, cada copia dever "colada" antes da proxima copia, salvo se "gravar" em uma variavel de memoria,porem ficará muitoo mais facil obter um retorno e alterações se diponibilizar seu arquivo com alguns dados (podem ser dados ficticios).

 
Postado : 16/07/2012 9:03 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Existem algumas duvidas quanto ao codigo, cada copia dever "colada" antes da proxima copia, salvo se "gravar" em uma variavel de memoria,porem ficará muitoo mais facil obter um retorno e alterações se diponibilizar seu arquivo com alguns dados (podem ser dados ficticios).

Reinaldo, Aqui no trabalho não tenho permissão para Upload, se você tiver um e-mail que possa informar, contudo tentarei anexar no meu computador em casa.

 
Postado : 17/07/2012 7:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

consegui anexar os arquivos... caso ainda persista a duvida disponha...

 
Postado : 19/07/2012 7:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não vi o anexo; se por email for mais facil :[email protected]

 
Postado : 19/07/2012 7:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou anexando seu exemplo conforme sua mensagem

Reinaldo, bom dia!

Segue anexo os arquivos. Em um determinado momento eu até consegui criar um código que funcionou mas ficou muito lento e o código está apagando a linha seguinte. A minha intenção é copiar os dados para um espaço virtual e depois colá-los de uma vez na planilha. Segue abaixo esse código, fique a vontade em anexar os arquivos no planilhando, desde já muito obrigado pela ajuda:

Não entendi o que quis dizer com “A minha intenção é copiar os dados para um espaço virtual e depois colá-los de uma vez na planilha” :?:

Creio que o principal é copiar os dados de diversas planilhas e “CONSOLIDAR” em uma única, correto :?:

Uma duvida:
Um arquivo PAC tem uma única planilha com dados, ou pode ter mais?
No código ao “filtrar” os arquivo a serem abertos está exclusivamente xls; porem seu exemplo é xlsx, vai utilizar as duas extensões??

 
Postado : 22/07/2012 1:36 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sim. a finalidade é consolidar varias planilhas em uma única.
O arquivo PAC funciona como um formulário que as pessoas preenchem e tem somente uma planila nele, observei que realmente alguns foram salvos como xls e outros como xlsx. Caso não tenha como trabalhar com as duas extensões eu posso pedir para o pessoal trabalhar com somente uma.
Eu recebo inumeros formulários "PAC", e preciso controlar as datas e prazos informado nele, por isso importo tudo para uma única planilha chamada controle, ao importar as informações ficam associadas a um número (informado na coluna número do controle), esse número eu identifico e renomeio o arquivo PAC que eu deixo em um único diretório.

 
Postado : 23/07/2012 6:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Substitua o codigo que esta no modulo1 pelo abaixo e veja se atende:

Public Sub importa_dados()
'Declaração das Variaveis
Dim Arquivo As String, sFix As String, tStr As String, nLarq As String
'Dim data As Date
Dim sPac As Worksheet, sControle As Worksheet
Dim lastRow As Long
'Atribui valor Controle
Set sControle = ThisWorkbook.Worksheets("Controle")

'Procurar a primeira célula vazia na coluna "B"
lastRow = sControle.Cells(Cells.Rows.Count, "B").End(xlUp).Row + 1

'Solicita o arquivo a ser importado
 Arquivo = Application.GetOpenFilename("(*.xls*), *.xls*")
 Workbooks.Open Filename:=Arquivo

'atribui valor Pac
Set sPac = Workbooks(ActiveWorkbook.Name).Sheets("Pac")
'Congela a tela
Application.ScreenUpdating = False

'Salva valores de Pac na sheet controle
sControle.Cells(lastRow, 2) = sPac.Range("M7").Value
sControle.Cells(lastRow, 3) = sPac.Range("AJ7").Value
sControle.Cells(lastRow, 4) = sPac.Range("M9").Value
sControle.Cells(lastRow, 5) = sPac.Range("M11").Value
sControle.Cells(lastRow, 6) = sPac.Range("BG11").Value
sControle.Cells(lastRow, 7) = sPac.Range("BG9").Value
sControle.Cells(lastRow, 8) = sPac.Range("BX11").Value
sControle.Cells(lastRow, 9) = sPac.Range("A14").Value
sControle.Cells(lastRow, 10) = sPac.Range("A22").Value
sControle.Cells(lastRow, 11) = sPac.Range("AS22").Value

'Obtem o novo nome do arquivo Pac
tStr = Left(Arquivo, Len(Arquivo) - Len(ActiveWorkbook.Name))
sFix = Right(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - (InStr(1, ActiveWorkbook.Name, ".", 1) - 1))
nLarq = "PAC_" & sPac.Range("M9").Value & "_" & lastRow & sFix

'fecha o arquivo pac
ActiveWorkbook.Close
'Renomeia o arquivo Pac
Name Arquivo As tStr & nLarq

'Seta foco na PLANILHA MENU
ThisWorkbook.Worksheets("Menu").Activate
'Libera a tela
Application.ScreenUpdating = True

MsgBox ("Pac importado com sucesso!")
End Sub
 
Postado : 23/07/2012 1:12 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Deu erro de execução, subscrito fora do intervalo , na seguinte linha :
'atribui valor Pac
Set sPac = Workbooks(ActiveWorkbook.Name).Sheets("Pac")

 
Postado : 23/07/2012 2:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

O arquivo "Pac" aberto tem a planilha com nome Pac?

Altere para: Set sPac = Workbooks(ActiveWorkbook.Name).Sheets(1) 'ira "pegar" a primeira planilha do arquivo recem aberto

 
Postado : 23/07/2012 2:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caro Reinaldo, bom dia!
Muito obrigado pela ajuda e deculpe-me pela demora em retornar-te. Funcionou muito bem, somente hoje tive a oportunidade de testar o código com a sua última dica.
Saldações.

 
Postado : 11/09/2012 7:12 am