Notifications
Clear all

Botão do Projeto A, fechar o projeto A abrir projeto B

16 Posts
2 Usuários
0 Reactions
2,396 Visualizações
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Pessoal,

O projeto Programação, através de um botão, abre a userform1 da planilha BD que encontra-se no caminho: C:Usersalisson.jalDownloads

Isso funciona perfeitamente, mas eu preciso que, ao abrir a userform1 da planilha BD, o mesmo seja encerrado.

Exemplo para explicação:

Botão1_click

unload programação

Abra a userform1 da planilha BD.show

end sub

 
Postado : 05/03/2015 8:11 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Lorenzon,

Boa Tarde!

veja se assim resolve.

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 : 05/03/2015 9:33 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Onde eu altero o caminho do arquivo. Deu esse erro aqui:

 
Postado : 05/03/2015 10:42 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Você não deve alterar o caminho do arquivo para um local fixo. Isso provocaria outro erro semelhante caso você mudasse o arquivo de lugar, por exemplo.
ao invés disso, você deve ter os dois arquivos dentro da mesma pasta e, no lugar do caminho fixo, digite o comando que pega qualquer caminho (variável), independente de onde o mesmo esteja localizado (ActiveWorkbook.Parh).

Muito provavelmente, esse erro deve está ocorrendo porque você não desabilitou, na rotina existente no seu arquivo, o caminho que você tinha colocado para o VBA procurar o arquivo BD.

Você executou o arquivo que lhe enviei? No arquivo que lhe enviei não está ocorrendo nenhum erro.

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 : 05/03/2015 1:11 pm
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Antes de qualquer coisa, deixo claro que você já ajudou muito, muito mesmo!

Realmente! O arquivo enviado por você funciona perfeitamente!

Mas vamos a algumas considerações:

Essa minha demanda é para atender a um sistema de Avaliação de Desempenho aqui na empresa. Sendo que temos vários setores (Produção, Expedição, Recursos Humanos), eu disponibilizei a cada setor, por meio de uma pasta na rede, uma cópia do Projeto de Cadastro.

Todos os cadastros são salvos na planilha BD, localizada em outra pasta da rede, ou seja, no Projeto de Cadastro, o local para acessar e salvar o registro, tem que ser fixo.

Então, para frisar:

O projeto de Cadastro, através de um botão, ele tem que:

- Ser fechado automaticamente;
- Abrir a planilha BD, localizada em um local fixo da rede;
- Abrir determinada userform da planilha BD através de um SUB;

 
Postado : 06/03/2015 4:47 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Bom...

Nesse caso, troque a rotina que eu coloquei no Módulo 1 de:

Sub AbrirArquivo()
    Dim Caminho As String
    Caminho = ActiveWorkbook.Path
    Workbooks.Open Filename:=Caminho & "BD.xlsm"
End Sub

Para esta:

Sub AbrirArquivo()
    Dim Caminho As String
     
    'Use esse caminho ou outro qualquer que queira de acordo onde está o seu arquivo BD na rede
    Caminho = "C:Usersalisson.jalappDataLocalTempRar$DI02.261BD.xlsm"
    Workbooks.Open Filename:=Caminho
End Sub

ATENÇÃO: A sua rotina existente no CommandButton do Userform só deve essass linhas. Nada mais:

Private Sub CommandButton1_Click()
    DoEvents
    Call AbrirArquivo
    Workbooks("Lançamento.xlsm").Activate
    Workbooks("Lançamento.xlsm").Close
End Sub

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 : 06/03/2015 6:56 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Estamos quase lá!

Agora, com os códigos que você sugestionou, eu consigo, através do projeto de Lançamento, fechar o projeto de Lançamento e abrir a planilha de BD, a qual encontra-se salva no caminho: L:Avaliacao_de_desempenhoBASE_DE_DADOS

Mas ressalto a seguinte consideração:

Além de abrir a planilha BD, é necessário executar uma SUB. Exemplo:

Sub AbrirArquivo()
Dim Caminho As String

'Use esse caminho ou outro qualquer que queira de acordo onde está o seu arquivo BD na rede
Caminho = "L:Avaliacao_de_desempenhoBASE_DE_DADOSBD.xlsm"
Workbooks.Open Filename:=Caminho

Application.Run (Abrir a userform1)

End Sub

Como faço?

 
Postado : 06/03/2015 7:39 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Nesse caso, basta inserir na rotina Workbook_Open() do arquivo BD.xlsm, o código para carregar o formulário.

Private Sub Workbook_Open()
    UserForm1.Show
End Sub

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 : 06/03/2015 8:49 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Eu ainda não havia dito, mas a planilha BD tem duas funções:

- Ser um banco de dados;
- Atualizar e pesquisar dados através das userform's nelas presentes;

Na função de banco de dados, o projeto de Lançamento abre a BD, salva os dados e a fecha.

Na função de Atualizar e pesquisar dados, o projeto de Lançamento, através de um botão, será encerrado automaticamente e abrirá determinada userform da planilha BD.

Sendo assim, não posso utilizar o comando Workbook_open da planilha BD, pois assim, sempre que a mesma for aberta, a userform1 será executada.

O ultimo código que você sugeriou esta perfeito, mas é necessário inserirmos um código que, além de abrir a planilha BD e fechar o projeto de lançamento, abra determinada userform da planilha D.

 
Postado : 06/03/2015 9:10 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Como é que você identifica essas duas funções? quando é que você sabe que é só para salvar os dados e fechar e quando é que você sabe que é para abrir o userform do arquivo BD.xlsm? Existem botões de comandos diferentes para cada uma dessas funções no userform do arquivo Lançamento? Se sim, você deverá criar, no arquivo Lançamento uma VARIÁVEL GLOBAL do tipo numérico, por exemplo, e sempre que você clicar em dos botões que disparam essas funções, você deve atribuir um número (que você define previamente como sendo botão 1 e botão 2, ou botão para BD e botão para form, respectivamente.

Com essa variável global preenchida com o número do botão que foi clicado (e como o botão vai chamar a rotina AbrirArquivo), você passa esse valor da variável como parâmetro para o procedimento AbrirArquivo.

Na rotina AbrirArquivo então você colocará um IF para identificar que número foi recebido. Por exemplo, se foi 1, não dispara a abertura do userform. Se for 2, abre o userform.

Para passar o número na rotina AbrirArquivo, você deve fazer a seguinte alteração:

Sub AbrirArquivo(ByVal Botão As Integer)

quando você for chamar a rotina AbrirArquivo no arquivo Lançamento, dentro da rotina Click do CommandButton, automaticamente, o VBA já vai solicitar o parâmetro a ser passado. Digamos que você tenha criado a variável global chamada BotãoClicado do tipo Integer. Você chamaria a rotina assim:

BotãoClicado = 1
Call AbrirArquivo (BotãoClicado)

A rotina AbrirArquivo será executada e já "saberá" qual foi o botão que foi clicado. No exemplo aqui, está recebendo o número 1 (que corresponderá a uma das funções que você quer que seja executada ao abrir o arquivo BD).

Agora, lá dentro da rotina AbrirArquivo você deve colocar algo como:

Sub AbrirArquivo (ByVal Botão as Integer)
     If Botão = 1 then
          'Não faz nada
     Else
           Dim Caminho As String

          'Use esse caminho ou outro qualquer que queira de acordo onde está o seu arquivo BD na rede
          Caminho = "L:Avaliacao_de_desempenhoBASE_DE_DADOSBD.xlsm"
          Workbooks.Open Filename:=Caminho
     End If
End Sub

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 : 06/03/2015 9:59 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Nesse projeto existe um Menu Iniciar que é aberto pelo Workbook_Open.

Esse menu permite que o usuário selecione a tarefa desejada como, por exemplo: Cadastrar uma Avaliação de Desempenho ou pesquisar uma avaliação. (Cada um módulo tem uma userfom).

No módulo de cadastro, tudo já está pronto! Ou seja, a planilha BD recebe os dados, grava-os e, feito isso, a mesma é encerrada.

No módulo de pesquisa, existe um outro botão para abrirmos a planilha BD e a userform de pesquisa dessa planilha.

No meu primeiro exemplo, existe um código que chama a userform1 da planilha BD, como se fosse um simples Userform1.show.

ele faz algo como:

sub abrir
'macro na planilha BD.

userform1.show

end sub

BOTÃO1_click

Application.rum (abrir)

end sub

Observa que existe um código assim que abrir a userform da planilha BD, mas se eu coloca-lo junto ao seu código, o projeto de lançamento não é encerrado ao abrir a BD.

 
Postado : 06/03/2015 10:56 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Agora deu um nó! Não consegui entender mais nada!

O melhor é você pegar seus dois arquivos (apagar ou descaracterizar dados confidenciais, se for ocaso, ou ainda fazer um exemplo completo do que deseja), compactar e postar aqui.

Talvez até outros participantes do fórum possam ajudar, pois o meu estoque de código já se esgotou...

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 : 06/03/2015 11:27 am
Lorenzon
(@lorenzon)
Posts: 355
Reputable Member
Topic starter
 

Wagner,

Já resolvemos 98% do problema!

O que eu preciso agora é apenas inserir no seu código, um comando que execute uma macro da planilha BD.

A gente já conseguiu, através de um botão do Projeto A, fechar o projeto A e abrir o Projeto B.

O que eu preciso é:

Através de um botão do Projeto A, fechar o projeto A e abrir o Projeto B e executar uma macro do Projeto B.

 
Postado : 06/03/2015 11:49 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Lorenzon,

Entendi. Bom... não sei se isso é possível. Provavelmente, deve ser possível, todavia, eu desconheço como fazer. Vou até ficar atento ao tópico para ver se alguém do fórum coloca a solução para isso.

Vi que existe uma solução que seria colocar a seguinte linha de código, na rotina AbrirArquivo:

    Application.Run "BD.xlsm!Macro1" 'Aqui substituir pelo nome da macro que quer executar

Todavia, fiz alguns testes aqui e sempre dá esse erro:

Creio que isso é porque a partir do Excel 2007 a Microsoft criou um sistema de segurança que não permite que se execute arquivos de macro sem antes habilitar as opções de segurança de que realmente se quer executar aquele arquivo que contém macro.

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 : 06/03/2015 1:25 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

O erro é:

Erro em tempo de execução '1004':
Não é possível executar a macro 'BD.xlsm!Macro1'. Talvez ela não esteja disponível nesta pasta de trabalho ou todas as macros estejam desabilitadas.

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 : 06/03/2015 1:28 pm
Página 1 / 2