Notifications
Clear all

Nome da planilha em VBA

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

Boa noite à todos,

Não sei se é possivel, eu tenho uma planilha de clientes que atualizo todos os meses, eu queria ver se tem a possibilidade de automatizar o nome da planilha?
Hoje eu uso uma macro que funciona, só que eu tenho que ficar alterando todo mês.
Tenho que alterar o nome do workbook e o nome do worksheets conforme o mês corrente.

Sub Copiar_Dados()

Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet

'Arquivo Destino, abrimos primeiro
'Ajuste o caminho do mesmo
Workbooks.Open Filename:="C:Documents and SettingsAdministradorDesktopCliente A.xLS"

'Arquivos e Abas de Origem e Destino
Set wsOrigem = Workbooks("Fevereiro.xls").Worksheets("Cliente A")
Set wsDestino = Workbooks("Cliente A.xls").Worksheets("Fevereiro")

With wsOrigem
.Range("a1:e200").Copy Destination:=wsDestino.Range("a1")
End With

'Fecha o Arquivo Destino e Salva
Workbooks("Cliente A.xls").Close SaveChanges:=True

MsgBox "Introdução de Dados Concluída Cliente A"

'Arquivo Destino, abrimos primeiro
'Ajuste o caminho do mesmo
Workbooks.Open Filename:="C:Documents and SettingsAdministradorDesktopCliente B.xLS"

'Arquivos e Abas de Origem e Destino
Set wsOrigem = Workbooks("Fevereiro.xls").Worksheets("Cliente B")
Set wsDestino = Workbooks("Cliente B.xls").Worksheets("Fevereiro")

With wsOrigem
.Range("a1:e200").Copy Destination:=wsDestino.Range("a1")
End With

'Fecha o Arquivo Destino e Salva
Workbooks("Cliente B.xls").Close SaveChanges:=True

MsgBox "Introdução de Dados Concluída Cliente B"

'Arquivo Destino, abrimos primeiro
'Ajuste o caminho do mesmo
Workbooks.Open Filename:="C:Documents and SettingsAdministradorDesktopCliente C.xLS"

'Arquivos e Abas de Origem e Destino
Set wsOrigem = Workbooks("Fevereiro.xls").Worksheets("Cliente C")
Set wsDestino = Workbooks("Cliente C.xls").Worksheets("Fevereiro")

With wsOrigem
.Range("a1:e200").Copy Destination:=wsDestino.Range("a1")
End With

'Fecha o Arquivo Destino e Salva
Workbooks("Cliente C.xls").Close SaveChanges:=True

MsgBox "Introdução de Dados Concluída Cliente C"

End Sub

Grato pela ajuda.
Ado

 
Postado : 24/02/2013 3:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Se você usar a pesquisa encontrará assuntos que abordam o oque precisa.

Tente usar o nome da guia em uma célula.

ActiveSheet.Name = Range("a3").Value

Att

 
Postado : 24/02/2013 5:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Para um melhor entendimento: O arquivo "Fevereiro.xls" é aberto e contem uma aba para cada cliente? e o objetivo e copiar os dados mensais para as planilhas individuais?
Se for pode ser testado:

Sub Copiar_Dados()
Dim Mes As String, nS As String, nCp As String
Dim wsOrigem As Worksheet
Dim wsDestino As Worksheet
Mes = ThisWorkbook.Name
'Arquivo Destino, abrimos primeiro
'Ajuste o caminho do mesmo

For Each ws In Sheets
nS = ws.Name
nCp = nS & ".xls"
Workbooks.Open Filename:="C:Documents and SettingsAdministradorDesktop" & nCp

'Arquivos e Abas de Origem e Destino
Set wsOrigem = Workbooks(Mes).Worksheets(nS)
Set wsDestino = Workbooks(nCp).Worksheets(Mes)

With wsOrigem
.Range("a1:e200").Copy Destination:=wsDestino.Range("a1")
End With

'Fecha o Arquivo Destino e Salva
Workbooks("Cliente A.xls").Close SaveChanges:=True


MsgBox "Introdução de Dados Concluída " & nS
Next
End Sub
 
Postado : 25/02/2013 5:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Reinaldo,

Essa macro que eu postei funciona, mas eu tenho que todo mês que entrar no VBA e mudar manualmente o mês:

Set wsOrigem = Workbooks("Fevereiro.xls").Worksheets("Cliente A")
Set wsDestino = Workbooks("Cliente A.xls").Worksheets("Fevereiro")

Vou tentar explicar melhor o que eu preciso.
Eu tenho uma planilha do mês corrente com todos os lançamentos do mês de todos os clientes,
dentro dessa planilha eu rodo uma macro que separa os lançamentos por cliente.
Eu tenho uma outra planilha para cada cliente e dentro dessa planilha eu tenho uma aba para cada mês.

Por exemplo:
Preciso que copie a aba do cliente A do mês corrente e cole na planilha do cliente A na aba do mês corrente

Grato
Ado

 
Postado : 28/02/2013 5:16 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Reinaldo,

Rodei a macro acima mas deu o seguinte erro:

Erro em tempo de execução '9':
Subscrito fora do intervalo

Segue em anexo as planilhas.

Grato
Ado

 
Postado : 01/03/2013 5:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ado mais uma pergunta, a macro e executada à partir do Arquivo do mes (nesse caso Fevereiro), ou está fora(em um arquivo diferente)dos arquivos envolvidos?

 
Postado : 01/03/2013 6:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom considerei que a rotina está sendo executada a partir do arquivo chamado Fevereiro
Poderia ser assim:

Sub Copiar_Dados()

Dim wsOr As Workbook
Dim wsDestino As Worksheet, wsOrigem As Worksheet
Dim nPlan As String, nArq As String, nMes As String
'Pega o nome do mes
nMes = VBA.Format(Date, "mmmm")
'acrescenta a extensão
nArq = nMes & ".xls"

'Arquivos de Origem
Set wsOr = Workbooks(nArq)

'Verifica cada planilha do arquivo de Origem
For Each wS In wsOr.Sheets
'Pega o nome do Cliente e acrescenta a extensão
nPlan = wS.Name & ".xls"
'Determina a planilha de origem (Arquivo e Planilha)
Set wsOrigem = wsOr.Worksheets(wS.Name)
'Abre o arquivo destino (aqui considerando que está no mesmo diretório do arquivo Origem)
Workbooks.Open Filename:=ThisWorkbook.Path & Application.PathSeparator & nPlan
'"C:Documents and SettingsAdministradorDesktop" & nPlan
'Determina o arquivo e planilha de destino
Set wsDestino = Workbooks(nPlan).Worksheets(nMes)

'Copia os dados da origem para o destino
With wsOrigem
.Range("a1:e200").Copy Destination:=wsDestino.Range("a1")
End With

'Fecha o Arquivo Destino e Salva
Workbooks(nPlan).Close SaveChanges:=True
MsgBox "Introdução de Dados Concluída " & wS.Name
Next
End Sub
 
Postado : 01/03/2013 6:29 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Reinaldo,

Obrigado pela ajuda, respondendo a sua pergunta a macro é executada à partir do arquivo mês.
Copiei e rodei a macro que você postou e continua dando o mesmo erro: Subscrito fora do intervalo, não sei se não estou fazendo alguma coisa errada.

Grato
Ado

 
Postado : 03/03/2013 1:49 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Esse erro dá-se normalmente por não encontrar o nome da planilha, é preciso que o nome esteja de acordo com o mes, e o caminho tb seja o considerado.
Verifique se o nome da planilha corresponde a:

'Pega o nome do mes
nMes = VBA.Format(Date, "mmmm")
'acrescenta a extensão
nArq = nMes & ".xls"

O retorno deve ser : "março.xls"
Considerei como caminho o mesmo local onde a planilha "mes" esteja salvo.

"'Abre o arquivo destino (aqui considerando que está no mesmo diretório do arquivo Origem)
Workbooks.Open Filename:=ThisWorkbook.Path & Application.PathSeparator & nPlan"
 
Postado : 04/03/2013 5:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite Reinaldo,

Desculpe pela demora na resposta, testei e deu certo.
Eu tenho mais uma duvida, se eu tiver o arquivo do mês em uma pasta e o arquivo dos clientes em outra pasta?
Muito obrigado pela ajuda.
Ado

 
Postado : 06/03/2013 6:11 pm