Notifications
Clear all

Troca de dados entre pastas de trabalho com nome variável

16 Posts
6 Usuários
0 Reactions
3,395 Visualizações
(@savioloz)
Posts: 10
Active Member
Topic starter
 

Bom dia à todos.

Tenho uma pasta de trabalho com um nome "Banco.xlsm" onde acumulo os meus dados. (Pasta de trabalho com os códigos VBA)
Tenho uma pasta de trabalho com o nome "Orçamento" que busca dados em "Banco.xlsm" e retorna colando a informação.

O código só funciona se a pasta de trabalho ativa tiver o nome "Orçamento"

Meu problema:
É possível editar meu código com nome fixo:

    Workbooks("orçamento.xlsx").Activate

Para um código que reconheça a planilha ativa: (A planilha que pede a informação)

    Workbooks("nome variável.xlsx").Activate

Para que eu não precise ficar constantemente mudando o nome do arquivo que estou trabalhando para "orçamento.xlsx"?

 
Postado : 09/08/2018 8:07 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

savioloz,

Boa Tarde!

Solicitamos, por gentileza, ao inserir código VBA no fórum, utilizar a ferramenta CODE existente logo acima da caixa de mensagens (quinto botão da esquerda para a direita).

Quanto a sua demanda, você deve usar o código abaixo:

ActiveWorkbook.Activate

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 09/08/2018 10:40 am
(@savioloz)
Posts: 10
Active Member
Topic starter
 

Se eu usar:

ActiveWorkbook.Activate

Eu permaneço ainda na planilha do banco de dados.

Eu preciso voltar para a planilha inicial. É nesse momento que gostaria de manter o nome de cada planilha sem ter que ficar editando para "orçamento.xlsx"

Funciona assim: Estou trabalhando numa planilha e acionando o código, vou para outra pasta, copio os dados e volto para a planilha inicial.
Como voltar para essa planilha sem ter que ficar renomeando todos os arquivos que utilizo para "orçamento.xlsx"?

Veja o código para um melhor entendimento;

Selection.Copy
    Workbooks("Banco.xlsm").Activate
    Sheets("CATALOGO").Select
    Range("B3").Select
    ActiveSheet.Paste
    
    Workbooks("Banco.xlsm").Activate
    Sheets("CATALOGO").Select
    Range("C5").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Workbooks("orçamento.xlsx").Activate
    Sheets("Comp_analiticas").Select
    Range("A200000").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(2, 0).Select
'    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
 
Postado : 09/08/2018 12:31 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ao iniciar esse arquivo que você vai voltar pra ele, crie uma variável do tipo String e armazene nela o nome do arquivo. Depois, quando quiser voltar para o arquivo, basta fazer referência à variável.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 09/08/2018 1:15 pm
(@savio_loz)
Posts: 13
Active Member
 

Tens algum exemplo que se adeque ao código que postei?

 
Postado : 10/08/2018 11:59 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

savio_loz,

Boa tarde!

Muito difícil fazer conjecturas...

Poste seu arquivo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 10/08/2018 1:11 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Não entendi! Vc copia do banco para a planilha orçamento ou da planilha orçamento para o banco?

Se a planilha orçamento vc usa com frequencia o normal seria ter uma planilha pre formatada para que vc possa usar todas as vezes que precisar e nao ter que criar uma nova planilha a cada orçamento que fizer.

Qto a salvar os orçamentos realizados vc tem algumas de opções:

Salvar em pdf
Salvar em xls
Salvar em um banco de dados
Imprimir
Enviar por email

Enfim a criatividade é o limite.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 12/08/2018 1:16 pm
(@savioloz)
Posts: 10
Active Member
Topic starter
 

Wagner,
Eu não sabia que era tão difícil fazer conjecturas, uma vez que todo código foi postado. Perdão pela minha pouca experiência.

MPrudencio,
Como disse anteriormente, a pasta de trabalho "Orçamento" busca informações na pasta "Banco"
Fazer uma planilha modelo só serve quando eu inicio um orçamento.
Quando eu recebo orçamentos prontos e preciso fazer minhas conferências, percebi que perco muito tempo renomeando para "orçamento" um por um para o código funcionar.
Gostaria de identificar no código o arquivo que estou usando, evitando com isso perder tempo.
Pra isso eu acredito ter que criar uma variável que faça com que o código funcione com qualquer nome de arquivo analisado e eu não sei editar meu código para isso!

Estou anexando 3 arquivos (Banco, orçamento e PlanilhaNomeDiferente)
Como fazer para que o código que está no arquivo (Banco) funcione para as duas planilhas, sem ter que renomear PlanilhaNomeDiferente para orçamento?

Desde já, obrigado pela atenção de todos.

 
Postado : 12/08/2018 3:00 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Olá Savioloz

Vc abre as pastas de trabalho de orçamento manualmente, né? Então vc pode usar o índice do arquivo ao invés do nome.

1) Considerando que vc sempre abrirá Banco.xlsm antes de abrir alguma de orçamento;
2) Considerando ainda que não tenha nenhuma outra pasta de trabalho Excel aberta de outros assuntos no momento, somente ela, então o índice da Bancos.xlsm será 1;
3) Considerando também que após ter aberto uma pasta das de Orçamento (índice 2) vc a feche antes de abrir uma outra dessas;

Então vc sempre poderá se referir à qualquer das pastas de orçamento abertas (uma de cada vez) ao invés de Workbooks("Orçamento") como sendo:

Workbooks(2)

 
Postado : 12/08/2018 9:49 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

savioloz,

Bom dia!

Não se trata de falta de experiência. Desculpe se me expressei mal...

Quanto me referi as conjecturas, estava querendo dizer que o ideal é que você anexasse seus arquivos aqui ou arquivos exemplos idênticos aos originais, com poucas linhas, para podermos rodar integralmente, depurar e ver qual é a melhor forma de propor uma ajuda.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 13/08/2018 6:28 am
(@teleguiado)
Posts: 142
Estimable Member
 

Bom dia!!
savioloz, pelo que entendi acho que seria mais viável você ter uma aba modelo dentro do arquivo banco e toda vez que você for finalizar um orçamento você salve a aba modelo em outro arquivo.
Fiz isso em um arquivo que tenho aqui.

Tem um modelo dela nesse link http://www.planilhando.com.br/forum/viewtopic.php?f=10&t=23411

Obrigado.

Teleguiado.
E-mail: [email protected]

 
Postado : 13/08/2018 7:43 am
(@savioloz)
Posts: 10
Active Member
Topic starter
 

EdsonBR, muito obrigado pela atenção.

O procedimento de uso é exatamente como você imaginou.
Eu sempre abro o Banco antes e depois a outra planilha. (Ainda não sei automatizar essa parte e faço tudo manualmente mesmo)
Tentei usar sua ideia más não consegui direcionar para outra pasta de trabalho pela utilização de índices 1 e 2.
Por orientação anterior, anexei os arquivos resumidos da situação. Caso tenha disponibilidade de tempo, dê uma olhada para entender com mais detalhes.
Eu apenas substituí aqui o Banco por (1) e o orçamento por (2) no código.
Não funcionou! O que posso ter feito de errado?

Abraço.

 
Postado : 13/08/2018 7:55 am
(@savioloz)
Posts: 10
Active Member
Topic starter
 

teleguiado, bom dia e obrigado pela atenção.

Criar uma aba no mesmo arquivo irá me dá mais trabalho, pois terei de copiar todo aquivo que desejar analisar para dentro dessa aba nova.
Imagine um arquivo pronto e não em desenvolvimento. São vários aquivos que em algum momento eu preciso analisar o código informado. É aí que entra a conferência através do banco que já deixo aberto ali só para quando precisar. O problema é que para isso funcionar eu tenho que renomear o arquivo em análise para orçamento. É isso que estou tentando mudar...
uma forma do código guardar a informação da planilha ativa sem ter que renomeá-la!

 
Postado : 13/08/2018 8:10 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Provavelmente vc tenha algum modelo/pasta pessoal de macros em atividade por isso o núm. de Workbooks abertos deve estar sendo maior.
Não abri ainda seus arquivos pois estou no trabalho, mas tente o seguinte:
Ao invés de Workbooks(1), continue usando o Workbooks("Bancos.xlsm") para o primeiro Workbook e use Workbooks(Workbooks.Count) para o de Orçamento.

 
Postado : 13/08/2018 9:00 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

savioloz,

Boa tarde!

Segue código que atribui, no arquivo Banco.xlsm, uma variável que pega o nome dos arquivos abertos, exceto quando esse arquivo se chama "Banco.xlsm". Desse modo, substitui, no seu código, o nome do arquivo "Orçamento.xlsx" pelo nome da variável que armazena o nome dos arquivos, conforme haviua citado em post anterior.

DETALHE: Para que funcione corretamente, é necessário ter aberto, no momento que você for executar o código do arquivo Banco.xlsm, somente dois arquivos: Banco.xlsm e o outro arquivo (com qualquer nome) que contém os dados de onde você quer fazer as cópias.

Estou enviando apenas o arquivo Banco.xlsm pois os outros não mexi em nada e você já os tem.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 13/08/2018 1:17 pm
Página 1 / 2