Página 1 de 2
Limitar tempo de uso Planilha parte II
Enviado: 18 Nov 2015 às 15:55
por fazerbem
Vi aqui uma coisa que pra mim seria muito util, mas tenho uma duvida.
Eu uso o Excel 2013, e sei que muitos de meus clientes usam versoes abaixo disto e muitos Excel 97 ainda. Dai seria possivel enviar esta macro mesmo assim ? Na hora de Salvar a planilha qual terminacao melhor a ser usada, ja que estaria usando uma Macro e pudesse atingir outras versoes do Excel ?
A Macro abaixo,
Postado como : LIMITAR TEMPO DE USO DE UMA PLANILHA (30 DIAS)
Private Sub Workbook_Open()
Dim Edate As Date
Dim WS As Worksheet
'O código vai exibir a guia desejada antes de fechar o arquivo
'Obs: Caso as macros do usuario, não esteja habilitada, ele não verá o que deseja ver
Set WS = Worksheets("SuaGuia")
WS.Visible = True
Edate = Format("01/12/2015", "DD/MM/YYYY")
If Date > Edate + 30 Then
MsgBox "O arquivo vai expirar !!!"
ActiveWorkbook.Close
End Sub
Re: Limitar tempo de uso Planilha parte II
Enviado: 19 Nov 2015 às 12:08
por alexandrevba
Boa tarde!!
Até onde sei, o código é compatível com as versões anteriores.
Att
Limitar tempo de uso Planilha parte II
Enviado: 20 Nov 2015 às 13:18
por fazerbem
poderia me colocar um comando para quando expirar a pessoa ter a opcao de inserir uma Senha para liberar a entrada ?
Grato
Re: Limitar tempo de uso Planilha parte II
Enviado: 20 Nov 2015 às 13:45
por alexandrevba
Boa tarde!!!
Seria algo assim...
Código: Selecionar todosPrivate Sub Workbook_Open()
Dim Edate As Date
Dim WS As Worksheet
'O código vai exibir a guia desejada antes de fechar o arquivo
'Obs: Caso as macros do usuario, não esteja habilitada, ele não verá o que deseja ver
Set WS = Worksheets("SuaGuia")
WS.Visible = True
Edate = Format("01/12/2015", "DD/MM/YYYY")
If Date > Edate + 30 Then
MsgBox "O arquivo vai expirar !!!"
UserForm1.Show
Else
Exit Sub
End If
End Sub
Dentro do UserForm
Código: Selecionar todosPrivate Sub btAcesso_Click()
Dim strPass As String
Dim sht As Object
strPass = "alevba"
If Me.TextBox1.Value = strPass Then
MsgBox "Senha correta" 'Aqui use a senha
'UnProtected = True 'Desprotege a guia
For Each sht In Sheets
If sht.Name <> "Guia_Menu" Then 'Oculta as guias e deixa uma guia falsa chamada(Guia_Menu)
sht.Visible = True
End If
Next sht
Unload Me 'Fecha o UserForm
Else
If MsgBox("Senha incorreta, tente novamente", vbYesNo) = vbNo Then
For Each sht In Sheets
If sht.Name <> "Guia_Menu" Then 'Oculta as guias e deixa uma guia falsa chamada(Guia_Menu)
sht.Visible = xlSheetHidden
End If
Next sht
Application.Quit 'Fecha a aplicação
Else
TextBox1.Value = ""
End If
End If
End Sub
Não testado!!!
Att
Re: Limitar tempo de uso Planilha parte II
Enviado: 20 Nov 2015 às 18:43
por fazerbem
Nao consegui fazer, entao envio em anexo para se puderem me ajudar .
Coloquei um texto explicando o que eu gostaria.
Grato
Re: Limitar tempo de uso Planilha parte II
Enviado: 21 Nov 2015 às 13:12
por fazerbem
Amigos, consegui resolver conforme codigo abaixo.
Mas na mensagem ( MsxBox) quando espirado, eu queria por assim :
* Favor solicitar uma nova Tabela em:
* Andre:
fazer@gmail.com
* Fone: (21) 2222-2222
* WhatsApp: (21) 9999-9999
Ao invés disso:
MsgBox ("Você chegou no final do período de uso")
Private Sub Workbook_Open()
Dim exdate As Date
'data de expiração
exdate = [H4]
If Date > exdate Then
varNum = Application.InputBox("A planilha expirou, informe o codigo", "Revalidação do prazo", "####")
If varNum = 123456 Then
Exit Sub
End If
MsgBox ("Você chegou no final do período de uso")
ActiveWorkbook.Close
End If
MsgBox ("Você têm " & exdate - Date & " Dias restantes")
End Sub
Grato
Limitar tempo de uso Planilha parte II
Enviado: 21 Nov 2015 às 16:45
por fazerbem
considerando ainda o comando acima, resolvi mudar o codigo
exdate= [H4] pra exdate = 31/11/2015, pois baixei em outra maquina e deu erro de execucao .
e como faço agora para na maquina de quem baixar a planilha e a macro nao estiver habilitada , nao aparecer, se quer habilitar a Macro ???
Pois se a pessoa nao habilitar a Macro , ira normalmente carregar a planilha, dai a validade nao tera efeito algum
Andre
Limitar tempo de uso Planilha parte II
Enviado: 21 Nov 2015 às 19:32
por Parkeless
André,
Quanto a só deixar que a planilha seja aberta com as macros habilitadas::
http://gurudoexcel.com/forum/viewtopic.php?f=12&t=923
Quanto ao msgbox, não tem segredo, é só escrever o que você quer... quando quiser que a mensagem dê uma quebra, concatene com um Vbnewline (é como se fosse um Enter no msgbox)
msgbox "Exemplo" & vbnewline & "de quebra "& vbnewline & "de página."
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 09:28
por fazerbem
Parkeless, esta dando erro de compilação o comando Viewtopic acima em
?f e &
t
Private Sub Workbook_Open()
Dim exdate As Date
viewtopic.php
?f=12&
t=923
'data de expiração
exdate = "30/11/2015"
If Date > exdate Then
varNum = Application.InputBox("A planilha expirou, informe o codigo", "Revalidação do prazo", "####")
If varNum = 861485 Then
Exit Sub
End If
MsgBox ("Você chegou no final do período de uso")
ActiveWorkbook.Close
End If
MsgBox ("Lojista ! Você têm " & exdate - Date & " dias para usar esta Tabela. Após isso favor Solicitar em:
atendimento-rj@guaerdobrasil.com.br / (21) 3564-2347 / WhatsApp: (21)98799-3381")
End Sub
Re: Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 09:51
por Parkeless
Re: Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 11:38
por fazerbem
Desculpe ParkeLess , rsrsrs
EU fiquei na dúvida agora , pois ja tenho o comando no final desta mensagem, dentro de "Esta Pasta de Trabalho"
Gostaria de saber se devo criar mais 2 comandos com os nomes: ??
- Worbook_BeforeClose.......
Dim ....
- Private Sub Workbook ......
For each ....
Gostaria que me explicasse o que faz cada comando acima para eu entender.
segue meu comando atual que esta em "Esta Pasta de Trabalho"
Private Sub Workbook_Open()
MsgBox (" *************************** ATENÇÃO LOJISTA! ***************************" & vbNewLine & "" & vbNewLine & " PEDIDO MÍNIMO R$ 1.500,00" & vbNewLine & "" & vbNewLine & " -> NESTA TABELA DE PEDIDOS, OS DESCONTOS SÃO AUTOMÁTICOS" & vbNewLine & " -> FAVOR INSERIR SEU C.N.P.J E SEU NOME APENAS" & vbNewLine & " -> CASO ENTRE COM UM C.N.P.J NÃO CADASTRADO, FAVOR FAZÊ-LO" & vbNewLine & " -> APÓS ISSO ENTRE COM A QNT DESEJADA" & vbNewLine & "" & vbNewLine & "
WWW.GAUERDOBRASIL.COM.BR")
Dim exdate As Date
'data de expiração
exdate = "30/11/2015"
If Date > exdate Then
varNum = Application.InputBox("A planilha expirou, informe o codigo", "Revalidação do prazo", "####")
If varNum = 123456 Then
Exit Sub
End If
'Tela Planilha expirada
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Favor solicitar uma nova Tabela:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & "" & vbNewLine & "" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
ActiveWorkbook.Close
End If
'Tela faltam tantos dias para expirar
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Você tem " & exdate - Date & " dias para usar esta Tabela de Pedidos" & vbNewLine & " Após isso favor solicitar através de:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
End Sub
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 12:31
por Parkeless
André,
Não, você não pode criar novos comandos; vai ter que colocar antes ou depois do código que você já tem.
O que o comando faz é o seguinte:
Ao fechar (beforeclose):
Oculta todas as abas, EXCETO a aba com o nome "Área de Segurança". Nessa aba haverá só uma tela com a mensagem "Habilite as macros do Excel para visualizar o conteúdo da planilha." (ou algo assim)...
O legal é que as abas são ocultas com o código xlveryhidden, o que significa que não dá para o usuário simplesmente reexibir a planilha... isso só pode ser feito através de código.
Você vai ter que colocar esse código no final de tudo; é a última coisa que ele vai fazer antes de fechar.
Ao abrir (onOpen):
Reexibe as abas ocultas ao abrir, simplesmente.
Onde você vai colocar esse código... depende do que você quer. testa aí, se antes, ou depois, ou no meio depois de alguma parte específica do código.
Resultado: é a macro que torna a planilha visível ao abrir, ou seja, só vai dar pra ver alguma coisa se as macros estiverem habilitadas.
Não preciso falar que, pra qualquer parte desse sistema de segurança funcionar, você tem que proteger seu código com senha no VBE, certo? Senão, qualquer pessoa que manjar de VBA pode entrar e editar seu código. Aí não adianta nada disso kk
Re: Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 12:39
por fazerbem
ParkeLess 2 duvidas
1- Como faco isso ? proteger seu código com senha no VBE . Minha Planilha ja e protegida por senha comum para editar apenas parte dela.
2- Meu codigo ficaria assim entao ? Se nao arruma pra mim.
Private Sub Workbook_Open()
For Each planilha In Worksheets
If planilha.Name <> "Área de Segurança" Then: planilha.Visible = xlSheetVisible
Next planilha
End Sub
Private Sub Workbook_Open()
MsgBox (" *************************** ATENÇÃO LOJISTA! ***************************" & vbNewLine & "" & vbNewLine & " PEDIDO MÍNIMO R$ 1.500,00" & vbNewLine & "" & vbNewLine & " -> NESTA TABELA DE PEDIDOS, OS DESCONTOS SÃO AUTOMÁTICOS" & vbNewLine & " -> FAVOR INSERIR SEU C.N.P.J E SEU NOME APENAS" & vbNewLine & " -> CASO ENTRE COM UM C.N.P.J NÃO CADASTRADO, FAVOR FAZÊ-LO" & vbNewLine & " -> APÓS ISSO ENTRE COM A QNT DESEJADA" & vbNewLine & "" & vbNewLine & "
WWW.GAUERDOBRASIL.COM.BR")
Dim exdate As Date
'data de expiração
exdate = "30/11/2015"
If Date > exdate Then
varNum = Application.InputBox("A planilha expirou, informe o codigo", "Revalidação do prazo", "####")
If varNum = 123456 Then
Exit Sub
End If
'Tela Planilha expirada
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Favor solicitar uma nova Tabela:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & "" & vbNewLine & "" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
ActiveWorkbook.Close
End If
'Tela faltam tantos dias para expirar
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Você tem " & exdate - Date & " dias para usar esta Tabela de Pedidos" & vbNewLine & " Após isso favor solicitar através de:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
Workbook_BeforeClose(Cancel As Boolean)
Dim planilha as worksheet
For each planilha in worksheets
If planilha.name <> "Área de Segurança" then: planilha.visible=xlveryhidden
Next planilha
End sub
-----
End Sub
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 12:46
por fazerbem
a 1 duvidad ja sei fazer rsrsrs !
preciso a segunda agora pra fechar com chave de ouro
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 12:55
por fazerbem
Nao sei se expliquei bem, entao vamos la.
No meu comando acima eu queria o seguinte: Geralmente ao entrar no Excel
- opcoes do excel
- central de confiabilidade / conf. da central de confiabilidade / conf da macro / desabilitar todas as macros com notificacao, esta marcado.
Eu quero que mesmo assim habilite a Macro, pois minha planilha de pedido precisa da Macro, e sabemos que algumas pessoas sentem receio de habilitar, mesmo a fonte sendo segura. Se nao der , entao o que me suger fazer ?
Grato
Andre
Re: Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 15:23
por Parkeless
Cara, não tem como "forçar" a ativação de uma macro, por uma questão de segurança do próprio Excel. Se o usuário quiser ter a segurança de abrir uma planilha e ter certeza que a macro só vai rodar se ele disser ao programa "sim, pode rodar a macro", ele vai ter isso.
Como te disse antes, o código que te passei serve para ocultar o conteúdo da planilha ao fechar, de forma que ao abrir, se o usuário quiser abrir com as macros desabilitadas, ele conseguirá, naturalmente... mas tudo o que conseguirá acessar é uma mensagem dizendo para habilitar as macros. Porque é a própria macro que exibe o conteúdo. Entendeu?
Vi algumas falhas no código, você fez bem um copypaste né rs, dei uma alterada, mas não tenho como testar sem seu arquivo. Se não der certo, encaminhe a planilha ok?
Código: Selecionar todosPrivate Sub Workbook_Open()
For Each planilha In Worksheets
If planilha.Name <> "Área de Segurança" Then: planilha.Visible = xlSheetVisible
Next planilha
MsgBox (" *************************** ATENÇÃO LOJISTA! ***************************" & vbNewLine & "" & vbNewLine & " PEDIDO MÍNIMO R$ 1.500,00" & vbNewLine & "" & vbNewLine & " -> NESTA TABELA DE PEDIDOS, OS DESCONTOS SÃO AUTOMÁTICOS" & vbNewLine & " -> FAVOR INSERIR SEU C.N.P.J E SEU NOME APENAS" & vbNewLine & " -> CASO ENTRE COM UM C.N.P.J NÃO CADASTRADO, FAVOR FAZÊ-LO" & vbNewLine & " -> APÓS ISSO ENTRE COM A QNT DESEJADA" & vbNewLine & "" & vbNewLine & " WWW.GAUERDOBRASIL.COM.BR")
Dim exdate As Date
'data de expiração
exdate = "30/11/2015"
If Date > exdate Then
varNum = Application.InputBox("A planilha expirou, informe o codigo", "Revalidação do prazo", "####")
If varNum = 123456 Then
Exit Sub
End If
'Tela Planilha expirada
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Favor solicitar uma nova Tabela:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & "" & vbNewLine & "" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
ActiveWorkbook.Close
End If
'Tela faltam tantos dias para expirar
MsgBox (" *************** CARO LOJISTA ***************" & vbNewLine & "" & vbNewLine & " Você tem " & exdate - Date & " dias para usar esta Tabela de Pedidos" & vbNewLine & " Após isso favor solicitar através de:" & vbNewLine & "" & vbNewLine & " Repres. Oficial: André Luiz" & vbNewLine & "" & vbNewLine & " Fone: (21) ****-2347" & vbNewLine & " WhatsApp: (21) *****-3381" & vbNewLine & " atendimento-rj@*************.com.br" & vbNewLine & " ***********************************************" & vbNewLine & " WWW.*************.COM.BR" & vbNewLine & "" & vbNewLine & " WWW.*******************.COM.BR")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim planilha As Worksheet
For Each planilha In Worksheets
If planilha.Name <> "Área de Segurança" Then: planilha.Visible = xlVeryHidden
Next planilha
End Sub
Lembrando que para esse código funcionar, você vai ter que criar uma aba chamada "Área de Segurança", senão vai dar erro.
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 15:55
por fazerbem
Deixa ver se entendi,
Este comando serve assim:
Digamos que a seguranca MAcro na maquina da pessoa esteja protegida como Desabilitar todas as Macros, entao rodando a planilha ele vai ter que Habilitar ou nao , quando a mensagem aparecer. Se sim e ao fechar entao na proxima vez que ele abrir , pelo menos a essa planilha, a mesma ja estara habilitada, e qualquer outra planilha continuara bloqeada , é isso ?
Qual a finalidade entao ? E porque criar a planilha Area de Seguranca ou outra qualquer ? Na minha tabela as abas existentes sao somente Pedido, Resumo e Novo Cadastro, nao seria util a planilha Area de Segurança. Mesmo assim teria que criar ?
Desculpe mas to aprendendo muita coisa Excel aqui no forum.
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 16:09
por fazerbem
Coloquei o codigo, salvei a planilha e ao sair , novamente me perguntou se eu queria salvar, disse sim, entao ao entrar novamente, ela entrou justamente na planilha criada Area de Seguranca, mas continuei tendo acesso as outras planilhas Pedido, Resumo etc.
Fiz algo de errado ? Pensei que se o Excel estivesse protegido para nao abrir Macro, apenas iria aparecer a Planilha Seguranca e as outras estariam ocultas e se a pessoa habilitasse a Macro, entao ai sim iria aparecer a Planilha Pedido que é a principal.
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 16:27
por Parkeless
André,
Funciona da seguinte forma:
Você (desenvolvedor) fecha a planilha:
Excel oculta todas as informações, e deixa só a Área de Segurança aberta.
Hipótese 1: Usuário abre a planilha com as macros desabilitadas:
Ele abre a planilha, e tudo o que vê é a área de segurança, onde ele é informado que não conseguirá acessar a planilha sem estar com as macros habilitadas.
Hipótese 2: Usuário abre a planilha com as macros habilitadas:
Ao abrir, a planilha torna visível todos os dados.
Ao fechar, a planilha ocultará os dados novamente. Ou seja, a proteção continua.
Se está dando erro, posta seu arquivo por favor.
Limitar tempo de uso Planilha parte II
Enviado: 22 Nov 2015 às 16:54
por fazerbem
Eu tenho que ter algumas Abas ocultas, mesmo estando o Excel no modo MACRO HABILITADO OU DESAB. Agora entendi, ao abrir o trabalho e estando na planila Pedido com as ( Abas clientes , Cod e ETC ocultas) e as Abas Resumo e cadastro nao ocultas, e salvar o trabalho sem fechar, é feito. E apos isso ao Fechar o trabalho ao ser mostrada ( QUER SALVAR SIM OU NAO ) e escolher NAO SALVAR, entao Ao abrir novamente terei as Abas ocultas e nao ocultas novamente. Mas caso escolha ( SALVAR ALTERACOES ) entao ao reentrar todas as abas que estavam ocultas tornam-se abertas, estando o Excel no modo protegido ou nao.
Eu pensei que no modo das Macros Desabilitadas, somente fosse aparecer a planilha Aviso de Seguranca. conforme aparece antes de fechar a planilha, mas ao abrir novamente abre-se tudo.