Ir ao conteúdo

Excel 2007 - Aba


proeletrica

Posts recomendados

Postado

Boa tarde

Venho + uma vez pedir ajuda.

Tenho uma macro que salva uma planilha em uma aba. Gostaria de salvar em uma pasta e não mais em uma aba ,isto é possivel fazer? Coso seja possivel enviarei a planilha amostra.

abraços

Postado

Boa tarde Patropi

segue o link da planilha http://www.sendspace.com/file/xz3l1m

Bem o que preciso é que ao invés de criar a aba APO 2020 ..... , (escrito no campo cliente) seja criada uma pasta com o nome APO 2020 ..... , (escrito no campo ). Pode existir a nescessidade de criar uma nova planilha com o mesmo nome do cliente , então a planilha deve ser posta tambem dentro da mesma pasta.

Se não fui claro, pergunte por favor.

abraço

Postado

veja se entendi corretamente o que você quer:

1. na planilha 'Padrão' estará preenchido somente o campo 'Cliente', em 'B3'

2. fazer uma cópia da planilha 'Padrão'

3. nomear essa cópia com o conteúdo de 'B3' (Cliente)

4. salvar essa cópia como um arquivo, cujo nome tb será o conteúdo de 'B3'

Postado

Osvaldo

veja o que preciso:

1. na planilha 'Padrão' será preenchido o campo 'Cliente', em 'B3' , o campo data e os campo dos codigos(primeira coluna)

2. fazer uma cópia da planilha 'Padrão' , quando do acionamento do botão para copiar.

3. nomear essa cópia com o conteúdo de 'B3' (Cliente)

4. salvar essa cópia como um arquivo, cujo nome tb será o conteúdo de 'B3'

5. Dentro deste arquivo poderá ter várias planilhas do mesmo cliente

Caso não tenha ficado claro, é só perguntar

abraço

Postado

restou dúvida sobre o que você quer dizer com:

"5. Dentro deste arquivo poderá ter várias planilhas do mesmo cliente"

Por ex., se houver 5 planilhas com o nome 'Luiza Canadá' em 'B3' você quer poder criar 5 cópias da plan 'Padrão', nomeá-las de 'Luiza Canadá' e salvar cada uma como um arquivo com esse mesmo nome?

Se sim, tais arquivos deverão ser salvos em pastas diferentes, pois terão nomes iguais. Nesse caso, precisaremos abrir a caixa de diálogo pra você escolher a pasta onde salvar a cada vez que a macro rodar.

Postado

Osvaldo

"5. Dentro deste arquivo poderá ter várias planilhas do mesmo cliente"

Por ex., se houver 5 planilhas com o nome 'Luiza Canadá' em 'B3' quero poder criar 5 cópias da plan 'Padrão', nomeá-las de 'Luiza Canadá' e salvar cada uma dentro do arquivo com esse mesmo nome , criado quando da primeira planilha com o nome 'Luiza Canadá' em 'B3' . Ou seja um arquivo com cinco planilhas dentro.

Postado
... Ou seja um arquivo com cinco planilhas dentro.

O Excel não aceita planilhas de nomes iguais em um arquivo. Para contornar, se houver mais de uma planilha para um dado cliente, acrescentar algum caracter ao nome em 'B3', ex. 'Luiza Canadá A', 'Luiza Canadá B', ...

Pode To be? (Joel Santana)

Postado
... Não teria como fazer algo vinculado a data , para salvar com o mesmo nome.

Boa! vamo nessa!

Postado

Boa tarde Osvaldo

Algum avanço por aí, por aqui o tico e teco estão brigados.

Como relação as letras após o nome , ficaria interessante se fosse automático, pois não vejo como saber qual a próxima letra a ser posta , no caso de muitas planilhas com o mesmo cliente.Como tú vê isto.

abraço

Postado

1. instale o código abaixo no módulo da planilha 'Padrão', assim:

a) copie o código daqui

B) clique com o direito na guia da planilha 'Padrão'

c) escolha 'Exibir Código'

d) na janela que vai se abrir apague tudo que estiver lá sem uso

e) depois de 'limpar' o módulo cole alí o código (não precisa sair do editor de VBA após colar)

Private Sub Worksheet_Change(ByVal Target As Range)
'======================================================
'ao ser inserido/alterado o nome do cliente em 'B3', _
este código coloca o número '1' em 'A2', que será _
utilizado p/ nomear a cópia da planilha
'======================================================
If Target.Address <> "$B$3" Then Exit Sub
Dim cliAnt, cliNov As String
Application.EnableEvents = False
cliNov = Target.Value
Application.Undo
cliAnt = Target.Value
If cliNov <> cliAnt Then
[A2] = 1
End If
Target = cliNov
Application.EnableEvents = True
End Sub

2. instale os 2 códigos abaixo em um módulo comum, assim:

a) copie os códigos daqui

B) volte ao editor de VBA

c) duplo clique em 'Módulo1', apague um código sem uso que lá está

d) cole alí os códigos

e) Alt+Q para rtornar para a planilha

Sub FazCópiaNomeiaSalva()
Dim nomeArq, nomePlan As String
'verifica se há ao menos 5 caracteres em 'B3', esse conteúdo _
será utilizado para nomear a cópia da planilha e o novo arquivo
If Len([B3]) < 5 Then
MsgBox "coloque um nome válido de cliente"
Exit Sub
End If
Application.ScreenUpdating = False
'atribui às variáveis os nomes que serão dados à cópia _
da planilha e ao arquivo
nomePlan = [B3] & Format([A2], "00")
nomeArq = [B3]
'insere cópia da planilha 'Padrão'
ActiveSheet.Copy
'renomeia a cópia da planilha, atribui outra macro ao botão (Bisel 1)
With ActiveSheet
.Name = nomePlan
With .Shapes("Bisel 1")
.OnAction = "'a proeletrica.xlsm'!FazMaisUmaCópia"
.TextFrame.Characters.Text = "COPIAR + UMA"
End With
End With
'salva e fecha o novo arquivo
'ActiveWorkbook.SaveAs Filename:=nomeArq, FileFormat:=52
'ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub

Sub FazMaisUmaCópia()
Dim proWS As Worksheet
Set proWS = ThisWorkbook.Sheets("Padrão")

With proWS
.[A2] = .[A2] + 1
.Copy after:=ActiveWorkbook.Sheets(Sheets.Count)
End With

With ActiveSheet
.Name = [B3] & Format([A2], "00")
With .Shapes("Bisel 1")
.OnAction = "'a proeletrica.xlsm'!FazMaisUmaCópia"
.TextFrame.Characters.Text = "COPIAR + UMA"
End With
End With
End Sub

3. preparação, antes de rodar o código - na planilha 'Padrão' :

a) desfaça a mesclagem de células na linha 2 para 'liberar' a célula 'A2' (sugiro que desfaça todas as mesclagens em todas as suas planilhas e adote como regra NÃO MESCLAR CÉLULAS, pois mesclagens são inúteis e podem provocar erros em fórmulas e macros)

B) atribua ao botão a macro 'FazCópiaNomeiaSalva'

4. funcionamento:

a) ao clicar no botão será criada uma cópia da planilha 'Padrão', essa cópia será renomeada com o conteúdo de 'B3' & o conteúdo de 'A2', será salvada como um novo arquivo e esse arquivo será fechado (no código acima as instruções para salvar e fechar estão desabilitadas pelos apóstrofos no início das respectivas linhas, enquanto você faz os testes, sugiro que as mantenha desabilitadas)

B) a cópia criada terá também o botão, com texto diferente do botão original, e vinculado à outra macro. Essa outra macro ('FazMaisUmaCópia') cria e renomeia mais cópias da planilha 'Padrão' nesse novo arquivo, ou seja, permite formar um arquivo com o nome do cliente, com várias planilhas nomeadas com o nome do cliente & o número que está em 'A2', sem precisar retornar para a planilha 'Padrão', basta ir clicando no botão de cada nova planilha. Ex. nome do arquivo 'Luiza' (que está na Paraíba...), nomes das planilhas desse arquivo: 'Luiza01', 'Luiza02', ...

faça os testes e retorne para os ajustes/alterações

Postado

Boa tarde Osvaldo

Bem , vamos por parte(dizia Jack...)

Copie e colei os codigos conforme tua indicacão, tirei as mesclagem e coloquei a rodar a macro , parece que rodoubem , pois não deu nenhum erro, acontece que não estou entendendo o funcionamento.

1 - apos acionar o botão para copiar , aparece outro botão copiar + vez e por aí vai.

-Para onde estão indo estas copias?

- A planilha padrão deve retornar sem preenchimento apos a copia para que eu possa fazer novo prenchimento para outro cliente. Como eu localizo estas copias?

4. funcionamento: ?????

a) ao clicar no botão será criada uma cópia da planilha 'Padrão', essa cópia será renomeada com o conteúdo de 'B3' & o conteúdo de 'A2', será salvada como um novo arquivo e esse arquivo será fechado (no código acima as instruções para salvar e fechar estão desabilitadas pelos apóstrofos no início das respectivas linhas, enquanto você faz os testes, sugiro que as mantenha desabilitadas)

B) a cópia criada terá também o botão, com texto diferente do botão original, e vinculado à outra macro. Essa outra macro ('FazMaisUmaCópia') cria e renomeia mais cópias da planilha 'Padrão' nesse novo arquivo, ou seja, permite formar um arquivo com o nome do cliente, com várias planilhas nomeadas com o nome do cliente & o número que está em 'A2', sem precisar retornar para a planilha 'Padrão', basta ir clicando no botão de cada nova planilha. Ex. nome do arquivo 'Luiza' (que está na Paraíba...), nomes das planilhas desse arquivo: 'Luiza01', 'Luiza02', ...

Postado
1 - apos acionar o botão para copiar , aparece outro botão copiar + vez e por aí vai.

-Para onde estão indo estas copias?

- A planilha padrão deve retornar sem preenchimento apos a copia para que eu possa fazer novo prenchimento para outro cliente. Como eu localizo estas copias?

1. abra o arquivo com os códigos instalados

2. coloque o nome do cliente em 'B3', aí o código vai inserir o número '1' em 'A2' (se quiser preencha tb outros campos)

3. clique no botão da plan 'Padrão'

4. o código vai fazer uma cópia da plan 'Padrão', mas não vai salvá-la e nem fechá-la se essas instruções estiverem ainda desabilitadas

Nessa situação você está com 2 arquivos abertos, o original e o outro formado pela cópia.

A partir daí você tem 2 opções:

a) não vai adicionar mais cópias ao novo arquivo >> então vamos salvá-lo e fechá-lo, o código fará isso depois de ativar as instruções salvar/fechar

B) vai adicionar mais cópias ao novo arquivo >> então retorne à plan 'Padrão', faça as alterações, volte à cópia e aperte o botão de lá para adicionar nova cópia; faça essa manobra até adiconar todas as cópias necessárias, então salve e feche o arquivo

Depois, essas manobras poderão ser incluídas nos códigos. O projeto está na sua cabeça, eu não sei exatamente o que você deseja. Então vá explorando o que já está feito e vá dizendo o que mais precisa. Todo desenvolvimento é assim.

Faça outro teste: remova os apóstrofos das instruções abaixo e, se houver alguma cópia já feita feche-a sem salvar, deixe só o arquivo original aberto

'ActiveWorkbook.SaveAs Filename:=nomeArq, FileFormat:=52
'ActiveWorkbook.Close

Em seguida aperte o botão para fazer uma cópia. O código vai fazer uma cópia, nomear, salvar e fechar o aqrquivo. Depois, procure esse arquivo na mesma pasta onde está salvo o arquivo original.

Postado

Boa tarde Osvaldo

Passo abaixo algumas observações:

1- coloquei o nome do cliente em 'B3', aí o código inseriu o número '1' em 'A2' beleza , acontece que quando coloco outro nome no B3, aparece novamente "1" em "A2". Preciso que , cada vez que 'B3' seja preenchido , "A2" seja incrementado de +1.

Explicarei porque isto:

Imaginamos que hoje preencho B3 com José Carlos, o arquivo será salvo como José Carlos1, perfeito?

Imaginamos que daqui a 10 dias preencho B3 com José Carlos, o arquivo tentará ser salvo como José Carlos1, e daí não vou conseguir salvar , pois os arquivos teriam os nomes iguais.

2- Fiz o outro teste: removi os apóstrofos da instruções ActiveWorkbook.SaveAs Filename:=nomeArq, FileFormat:=52 e da instrução ActiveWorkbook.CloseEm e, verifiquei o seguinte :

Ao apertar o botão para fazer uma cópia. O código fez uma cópia, nomeou, salvou e fechou o arquivo. Depois, procurei esse arquivo na mesma pasta onde está salvo o arquivo original(meus documentos) e encontrei neste lugar , portanto , esta parte está ok.

3 - no momento que apertei o botão copiar , a cópia foi feita , mas a planilha da aba padrão não está retornando vazia.

Vou parar os comentários por aqui. Vamos por parte dizia Jack.

Abraços

Postado

1- coloquei o nome do cliente em 'B3', aí o código inseriu o número '1' em 'A2' beleza , acontece que quando coloco outro nome no B3, aparece novamente "1" em "A2". Preciso que , cada vez que 'B3' seja preenchido , "A2" seja incrementado de +1.

É porque o número em 'A2' é incrementado a cada cópia feita para um dado ciente, ao mudar o cliente a sequência reinicia com o número '1', veja o complemento da explicação logo abaixo

Explicarei porque isto:

Imaginamos que hoje preencho B3 com José Carlos, o arquivo será salvo como José Carlos1, perfeito?

Não. Será salvo como 'José Carlos'. E as planilhas desse arquivo como 'José Carlos01', 'José Carlos02',...veja o item 4 do post #7 e o post #11 (você sugeriu data, porém com data você não conseguiria nomear mais que uma planiha num dia, daria repetição de nome, então optei pelo número sequencial)

Imaginamos que daqui a 10 dias preencho B3 com José Carlos, o arquivo tentará ser salvo como José Carlos1, e daí não vou conseguir salvar , pois os arquivos teriam os nomes iguais.

Eu tô trabalhando com a hipótese que você vai ter 1 arquivo para cada cliente e irá adicionando planilhas a esse arquivo. Ou você quer vários arquivos para um dado cliente? Não me parece prático esse sistema. Como você fará, por exemplo, para pesquisar um certo pedido, tendo muitos arquivos de um só cliente? Nada funcional, eu acho.

Qual a quantidade média de linhas que será gravada em uma planilha? você tem esse número? Com base nesse número poderei sugerir algo mais prático.

Por enquanto, para adicionar novas planilhas em um arquivo já salvo e fechado, precisará abrí-lo e, após fazer os lançamentos na planilha 'Padrão', clicar no botão da planilha desse arquivo em que irá adicionar a cópia. Provavelmente vai dar conflito com o número que vai estar em 'A2', mas isso acertamos depois.

2- Fiz o outro teste: removi os apóstrofos da instruções ActiveWorkbook.SaveAs Filename:=nomeArq, FileFormat:=52 e da instrução ActiveWorkbook.CloseEm e, verifiquei o seguinte :

Ao apertar o botão para fazer uma cópia. O código fez uma cópia, nomeou, salvou e fechou o arquivo. Depois, procurei esse arquivo na mesma pasta onde está salvo o arquivo original(meus documentos) e encontrei neste lugar , portanto , esta parte está ok.

Estranho, porque o caminho para salvar não foi especificado no código, nesse caso ele salva na mesma pasta...se quiser podemos indicar no código a pasta onde deverá salvar

3 - no momento que apertei o botão copiar , a cópia foi feita , mas a planilha da aba padrão não está retornando vazia.

Não havíamos cogitado ainda de limpar a planilha 'Padrão'. Diga quais células quer limpar depois de criar a cópia.

Por ora, defina se vai adotar 1 arquivo composto por várias planilhas para cada cliente, ou vários arquivos cada um com várias planilhas para cada cliente. Se entendi direito, você quer uma planilha para cada pedido. Seria isso?

Para efeitos práticos de busca e controle você pode até ter 1 arquivo com uma só planilha por cliente e ir colocando o histórico em linhas dessa planilha.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!