Notifications
Clear all

vba copiar dados da planilha a e colar na planilha b

15 Posts
3 Usuários
0 Reactions
1,560 Visualizações
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

prezados, Boa tarde!

por favor, alguém poderia contribuir com sua experiência?

eu tenho uma planilha a contendo várias informações, e eu preciso criar cópias dessa planilha com nomes diferentes (o conteúdo de cada planilha será o mesmo) porém quando eu gravo uma macro e depois tento executar várias vezes da erro.

passos que eu estou fazendo.

1 clico na planilha a

2 seleciono todo o conteúdo

3 clico em copiar ( para deixar os dados na área de transferência)

4 clico em adicionar nova planilha ( essa nova planilha vem bem com o nome plan2)

5 clico na célula a1 para ativar essa nova planilha (plan2)

6 colo as informações

7 renomeio essa Nova planilha para exemplo: N

8 clico novamente na planilha a para desativar a área de transferência.

isso funciona apenas uma vez pois o excel não localiza a plan 2 se eu tentar executar ( o excel deixa gravado a ação de clicar em plan2)

por favor, alguém poderia apenas criar uma ação que permitisse renomear a nova planilha antes de colar os dados ?

desde já agradeço muito pela atenção de todos e ajuda.

 
Postado : 31/03/2018 12:56 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Boa Tarde, segue conforme pedido...

Sub distribuir_dados()
On Error Resume Next
Dim nome_plan As String
Application.ScreenUpdating = False
Sheets.Add
Do
nome_plan = Application.InputBox("Digite o nome da Plan")
ActiveSheet.Name = nome_plan
If nome_plan = "" Then
MsgBox "Você deve inserir um nome para a nova Planilha!", vbExclamation
End If
Loop Until nome_plan <> ""
ActiveSheet.Range("a1:a5").Value = Plan1.Range("A1:A5").Value
Application.ScreenUpdating = True
MsgBox "Cópia dos dados Realizada com Sucesso!", vbInformation
End Sub

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 31/03/2018 2:44 pm
(@klarc28)
Posts: 971
Prominent Member
 
Sub Macro1()
'
' Macro1 Macro
'

'

Dim i As Long

For i = 2 To ThisWorkbook.Sheets.Count
    Sheets("Plan1").Select
    Cells.Select
    Selection.Copy
    Sheets(i).Select
    Range("A1").Select
    ActiveSheet.Paste
    ActiveSheet.Name = InputBox("Informe o nome da planilha " & i)
    Range("A1").Select
    Next i
End Sub
 
Postado : 31/03/2018 2:48 pm
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

bom dia

agradeço pela ajuda de vocês.

esqueci de anexar o código que eu estou usando.

o código é esse:

  Sub copiar_dados()

'esse código serve para copiar os dados da planilha A,
'criar uma nova planilha,
'renomear essa nova planilha e colar os dados nessa planilha criada.

    Sheets("planilha A").Select
    Cells.Select
    Selection.Copy
    
    ' ajuda nessa parte do código
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Plan2").Select
    Sheets("Plan2").Name = "planilha B"
    ' quando o usuário for criar uma nova planilha,
    'ele vai poder renomear antes de criar,
    'depois que ela for renomeda o conteúdo na aréa de transferência será colado
    
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "teste"
    Sheets("planilha A").Select
    Range("A1").Select
    Sheets("planilha B").Select
End Sub 
 
Postado : 01/04/2018 5:03 am
(@klarc28)
Posts: 971
Prominent Member
 
Option Explicit

 Sub copiar_dados()

'esse código serve para copiar os dados da planilha A,
'criar uma nova planilha,
'renomear essa nova planilha e colar os dados nessa planilha criada.

    Sheets("planilha A").Select
    Cells.Select
    Selection.Copy
    
    ' ajuda nessa parte do código
    Sheets.Add After:=Sheets(Sheets.Count)
    on error resume next
    ActiveSheet.Name = InputBox("informe o nome da planilha")
    ' quando o usuário for criar uma nova planilha,
    'ele vai poder renomear antes de criar,
    'depois que ela for renomeda o conteúdo na aréa de transferência será colado
    
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
    
End Sub
 
Postado : 01/04/2018 8:02 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

muito obrigado, ficou ótimo.

Por favor, como faço para agora apenas acrescentar esse código na planilha?

código que será acrescentado:

On Error Resume Next
Do
sh = Application.InputBox("Digite o nome da Plan")
Sheets(sh).Select
If ActiveSheet.Name <> sh Then
MsgBox "Digite um nome válido!", vbCritical
End If
Loop Until ActiveSheet.Name = sh

ele obriga o usuário digitar um nome válido.

eu gostaria de juntar o seu código com esse acima (assim quando o usuário for criar a planilha ele será obrigado a criar um nome valido)

muito obrigado.

 
Postado : 02/04/2018 4:59 am
(@klarc28)
Posts: 971
Prominent Member
 

.............

 
Postado : 02/04/2018 5:17 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

acredito que me expressei de forma errada :oops:

peço desculpas.

Eu não gostaria de inserir todo o código, mas sim apenas a opção de verificar se o nome é aceito pelo excel.

o código que está na última planilha anexa é ótimo, porém eu apenas preciso criar uma validação de nomes digitados.

quando o usuário chegar na parte em que deve digitar o nome da nova planilha, eu preciso que aqui tenha um código para verificar se o nome pode ou não ser aceito pelo excel.

muito obrigado

 
Postado : 02/04/2018 12:50 pm
xlarruda
(@xlarruda)
Posts: 732
Honorable Member
 

Mas como assim o nome pode ou não ser aceito?

___________________________________________________________________________________________
Se a resposta atendeu sua dúvida, por favor, clique no Gostei e marque o Tópico como [Resolvido].

Att.

André Arruda

 
Postado : 02/04/2018 3:16 pm
(@klarc28)
Posts: 971
Prominent Member
 

..............

 
Postado : 02/04/2018 9:46 pm
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

xlarruda,

o que eu gostaria é o seguinte.

apenas acrescentar uma validação no nome digitado pelo usuário. exemplo: se ele digitar um nome contendo /// ???? o excel vai exibir uma mensagem informando que esse tipo não é aceito e vai obrigar o usuário a digitar um nome aceito.

 
Postado : 03/04/2018 5:11 am
(@klarc28)
Posts: 971
Prominent Member
 

.............

 
Postado : 03/04/2018 5:35 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Em anexo, segue a planilha para você entender o que está acontecendo. Muito obrigado pela atenção.

 
Postado : 03/04/2018 6:22 am
(@klarc28)
Posts: 971
Prominent Member
 
Private Sub CommandButton1_Click()
   ' MsgBox "Tente criar uma planilha com o nome: planilha teste//////-----????? (crie exatamente com esse nome e sinais) você vai ver que o excel não 'exibe nenhuma mensagem e nem cria a planilha", vbInformation, ""
    
    Sheets("Plan1").Select
    Cells.Select
    Selection.Copy
    Sheets.Add After:=Sheets(Sheets.Count)
  Dim NOME As String
inicio:
  NOME = InputBox("informe o nome da planilha")
  
  If Len(NOME) > 31 Then
  MsgBox "Não é permitido nome com mais de 31 caracteres"
  
  GoTo inicio
  End If
  
  If InStr(NOME, "*") > 0 Then
  MsgBox "Não é permitido asterisco no nome"
  
  GoTo inicio
  End If
  
  If InStr(NOME, "?") > 0 Then
  MsgBox "Não é permitido ponto de interrogação no nome"
  
  GoTo inicio
  End If
  
  If NOME = "" Then
  MsgBox "Não é permitido nome em branco"
  
  GoTo inicio
  End If
  
  If InStr(NOME, "/") > 0 Then
  MsgBox "Não é permitido barra no nome"
  
  GoTo inicio
  End If
  
  If InStr(NOME, "") > 0 Then
  MsgBox "Não é permitido barra no nome"
  
  GoTo inicio
  End If
  
    ActiveSheet.Name = NOME
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Application.CutCopyMode = False
    
End Sub
 
Postado : 03/04/2018 7:02 am
(@jnexcel)
Posts: 298
Reputable Member
Topic starter
 

Muito obrigado. Resolveu o meu problema ;) ;) ;)

 
Postado : 03/04/2018 7:36 am