Notifications
Clear all

UserForm com as planilhas ocultas

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

Estou desenvolvendo um Form para entrada de dados e cálculos. Os dados que serão calculados estão dispostos em algumas planilhas.

Quero que no carregamento do workbook só apareça o UserForm. As planilhas devem estar disponíveis apenas para os cálculos do meu programa, mas precisam estar ocultas do usuário. Em outras palavras, o Excel XP estará oculto, trabalhando em background e o UserForm funcionará como se fosse um programa desenvolvido com o Visual Basic. O usuário irá manipular os dados da planilha, mas só via Form e não de forma direta nas planilhas.

Meu receio é se ocultando as planilhas, os dados que estão dispostos nelas poderão ser acessados, ou seja, ocultando as planilhas poderei acessar os objetos Rangers que eu criei?

Alguém poderia me ajudar?

Luiz Roberto

 
Postado : 27/05/2011 3:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Luiz, com a rotina abaixo colocada no Evento Open do seu arquivo, o aplicativo Excel ficará oculto,não aparecerá nem na Barra de tarefas, quando abrir, mostrando somente o formulário, e depois voltará ao normal quando fechar o Formulário.

Private Sub Workbook_Open()
    Application.Visible = False 'Oculta o App Excel
        UserForm1.Show
    Application.Visible = True 'Exibe o App Excel
End Sub

Da para se trabalhar os Ranges com o mesmo oculto, mas temos de tomar alguns cuidados, por exemplo, se ocultar as abas e as mesmas estiverem protegidas, em sua rotina para lançar algum dado nesta Aba se faz necessário desprotege-la primeiro, e depois proteger novamente.

Qualquer duvida retorne.

[]s

 
Postado : 27/05/2011 3:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Oi Mauro, valeu pela dica, mas quando fecho o UserForm (Unload Me), as planilhas ficam expostas ao usuário e é exatamente isso que eu não quero. Toda e qualquer alteração só pode ser feita via UserForm. O usuário não pode ter acesso direto às planilhas e nem ler os dados que estão nas várias planilhas por questões de segurança interna.

O que eu quero é que depois que o usuário terminar de usar o programa, que o workbook feche junto com o formulário e um workbook em branco seja aberto como se o usuário estivesse abrindo o Excel normalmente.

Como fazer isso?

Luiz Roberto

 
Postado : 27/05/2011 4:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Para criar um novo WorkBook e Fechar e Salvar o arquivo atual use :

Sub Sair()
    'Cria um novo arquivo em Branco
    Workbooks.Add

    'Salva e fecha o Arquivo Atual, mantendo o App Excel aberto
    ThisWorkbook.Close SaveChanges:=True
End Sub

Para Salvar o arquivo atual e encerrar o Excel use :

Sub Sair_1()
    'Salva a pasta de trabalho ativa.
    ActiveWorkbook.Save
    
    ' Encerra o Microsoft Excel
    ThisWorkbook.Application.Quit
End Sub

Agora quanto a questões de segurança, lembre-se que o arquivo poderá ser aberto sem as macros Habilitadas perdendo toda a sua proteção, o ideal seria Ocultar as Abas, e proteger o Projeto VBA e o Arquivo com senhas.

[]s

 
Postado : 27/05/2011 5:20 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Beto tudo blz?

Tenta esse codigo:

Private Sub UserForm_Terminate()
ActiveWorkbook.Close
End Sub

quando o UserForm finalizar a planilha ativa fecha mas o excel fica aberto.
Se quiser fechar o excel use o comando:

Private Sub UserForm_Terminate()
Application.Quit
End Sub
Ele vai fechar o excel portanto todas as planilhas que estiverem abertas.

 
Postado : 27/05/2011 5:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ok Mauro, entendi tudo, mas como posso ocultar as abas (planilhas) no meu workbook e ainda assim acessar os dados nessas planilhas? Ocultando as planilhas eu não perco acesso aos ranges que eu criar?

A segurança que eu estou me referindo aqui não é assim coisa de polícia não, mas por precaução para os dados básicos não serem alterados por falha de algum usuário.

Como eu protegeria meu projeto, para evitar que algum usuário tente entrar na janela do VBA? Qual seria o código para eu exigir uma senha de acesso?

Tem como, via código VBA, exigir uma senha quando o usuário tentar desabilitar as Macros do meu workbook?

As definições de Macro são para todo o objeto Apllication ou posso atribuir níveis de segurança diferenciados por workbook?

Desde já agradeço a sua gentileza em me ajudar.

Luiz Roberto

Para criar um novo WorkBook e Fechar e Salvar o arquivo atual use :

Sub Sair()
    'Cria um novo arquivo em Branco
    Workbooks.Add

    'Salva e fecha o Arquivo Atual, mantendo o App Excel aberto
    ThisWorkbook.Close SaveChanges:=True
End Sub

Para Salvar o arquivo atual e encerrar o Excel use :

Sub Sair_1()
    'Salva a pasta de trabalho ativa.
    ActiveWorkbook.Save
    
    ' Encerra o Microsoft Excel
    ThisWorkbook.Application.Quit
End Sub

Agora quanto a questões de segurança, lembre-se que o arquivo poderá ser aberto sem as macros Habilitadas perdendo toda a sua proteção, o ideal seria Ocultar as Abas, e proteger o Projeto VBA e o Arquivo com senhas.

[]s

 
Postado : 27/05/2011 6:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Beto, as abas estão ocultas para visualização mas acessiveis via código VBA, não sei qual o código que está utilizando em seu formulário para lidar com as alterações que citou no inicio, mas desde que a aba não esteja protegida é da mesma forma.

Pelas perguntas, acredito que não tenha muita intimidade com VBA, então sugiro que baixe alguma apostila e de uma lida, no site do Julio ele disponibilizou um curso GRATUITO com 120 lições são 6 Modulos, recomendo dar uma lida.
No caso de se trabalhar com ranges, de uma olhada abaixo :

Lição 17: Worksheet e Range - Propriedades e Métodos - Parte I
http://www.juliobattisti.com.br/cursos/ ... icao17.asp

Para proteger o Projeto VBA, no Editor de macros, clique com o Botão direito em VBAPROJECT, Propriedades, e defina uma senha.

Para as abas, é só protege-las, pode-se definir uma senha diferente para cada Aba, mas para se trabalhar via Formulário com as abas protegidas, temos que que nas rotinas que irão lançar dados nas abas, colocar instrução para desprotege-la (UnProtect) primeiro e depois Proteger (Protect) novamente.

As macros criadas são utilizadas somente no arquivo criado, a não ser que crie um modelo e salve para ser utilizado em todos os arquivos.

[]s

 
Postado : 27/05/2011 6:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Oi Mauro, de fato sou um pouco neófito em VBA Excel, mas já avancei bastante. Meio na raça, na persistência, pesquisando aqui e ali, estou desenvolvendo vários programas para facilitar a minha vida no meu trabalho. No serviço público se você não cria ou não faz uso de novas tecnologias, você acaba emburrecendo, virando uma múmia de incompetência.

Meu projeto atual está focado em desenvolver um pequeno aplicativo que automatize o cálculo dos salários de contribuição de servidores que pediram exoneração para assumir cargos em outros órgãos. Tenho que voltar no tempo para calcular a base de cálculo da Previdência desse servidor para efeito de aposentadoria. É um cálculo chato, cheio de nuances e que no meu setor é feito à mão. O cálculo envolve um monte de peculiaridades da legislação previdenciária da época e que muita das vezes é caótica. No final, meu aplicativo será capaz de preencher sozinho o formulário com os dados num documento Word, conforme um modelo exigido em lei. Já desenvolvi a maioria das rotinas e tudo está funcionando bem. Estou agora tratando de alguns aspectos que não domino e, por isso, estou pedindo ajuda.

Sobre as apostilas eu já dei uma lida. Comprei, inclusive, um livro sobre o VBA Excel e que está me ajudando muito. Sou formado em Administração e tudo que aprendi em computação foi sozinho, pois sou autodidata. Perdoe-me se as perguntas foram um tanto bobas.

No mais, valeu pela ajuda. Suas dicas foram muito úteis. Espero contar com você mais vezes.

Aquele abraço!

Luiz Roberto

Beto, as abas estão ocultas para visualização mas acessiveis via código VBA, não sei qual o código que está utilizando em seu formulário para lidar com as alterações que citou no inicio, mas desde que a aba não esteja protegida é da mesma forma.

Pelas perguntas, acredito que não tenha muita intimidade com VBA, então sugiro que baixe alguma apostila e de uma lida, no site do Julio ele disponibilizou um curso GRATUITO com 120 lições são 6 Modulos, recomendo dar uma lida.
No caso de se trabalhar com ranges, de uma olhada abaixo :

Lição 17: Worksheet e Range - Propriedades e Métodos - Parte I
http://www.juliobattisti.com.br/cursos/ ... icao17.asp

Para proteger o Projeto VBA, no Editor de macros, clique com o Botão direito em VBAPROJECT, Propriedades, e defina uma senha.

Para as abas, é só protege-las, pode-se definir uma senha diferente para cada Aba, mas para se trabalhar via Formulário com as abas protegidas, temos que que nas rotinas que irão lançar dados nas abas, colocar instrução para desprotege-la (UnProtect) primeiro e depois Proteger (Protect) novamente.

As macros criadas são utilizadas somente no arquivo criado, a não ser que crie um modelo e salve para ser utilizado em todos os arquivos.

[]s

 
Postado : 27/05/2011 7:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Beto, nem sempre as explicações que encontramos na Net são claras, por isso temos de perguntar, eu não considero nenhuma pergunta "boba", eu ainda não aprendi tudo, tambem sou auto-didata e tudo que sei foi com livros e nos diversos Foruns que participo, tambem já fiz muitas perguntas que para muitos era tirado de letra, mas para quem é iniciante não era dificil.

Esteja a vontade para perguntar o que quiser, o que estiver em meu alcance, estou aqui para ajuddar e compartilhar.

abraços

ET : Tambem sou Funcionário Publico e sei das dificuldades que enfrento.

 
Postado : 27/05/2011 7:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Mauro, obrigado.

O que mais me chateia em computação é que existe um monte de livro dizendo que o programa tal faz isso e aquilo, mas muito poucos dizem o como fazer. Sabe aquele pulo do gato? Esses pequenos macetes você descobre apenas de forma esparsa. Já comprei muitos livros sobre computação e alguns deles eu aproveitei apenas algumas páginas. Alguns escritores estão mais preocupados em mostrar o quanto sábios são e nós, mortais, ficamos a mendingar alguma dica importante. É a vida...rs

Aquele abraço!

Luiz Roberto

Beto, nem sempre as explicações que encontramos na Net são claras, por isso temos de perguntar, eu não considero nenhuma pergunta "boba", eu ainda não aprendi tudo, tambem sou auto-didata e tudo que sei foi com livros e nos diversos Foruns que participo, tambem já fiz muitas perguntas que para muitos era tirado de letra, mas para quem é iniciante não era dificil.

Esteja a vontade para perguntar o que quiser, o que estiver em meu alcance, estou aqui para ajuddar e compartilhar.

abraços

ET : Tambem sou Funcionário Publico e sei das dificuldades que enfrento.

 
Postado : 27/05/2011 7:47 pm