Página 1 de 1

Limitar o Tempo parte 3

Enviado: 24 Nov 2015 às 19:07
por fazerbem
Desculpa ainda estar insistindo neste topico, mas preciso que se a pessoa nao Habilitar o conteudo, de forma alguma conseguira me enviar um pedido, estando a planilha vencida ou nao.

Estando a Macro desabilitada ao rodar a planilha aparece:
Se deseja habilitar conteudo

Se eu fechar a mensagem consigo editar normalmente a planilha, mesmo estando ela desatualizada.

Se habilito entao entra as macros e tudo fica conforme eu quero.

POis bem, eu desejo que caso nao se habilite o conteudo ou:

- nao entre a planilha de pedido, e saia do Excel ou
- entre uma tela de aviso e de forma nenhuma a pessoa consiga reexibir as Abas que por ventura estejam ocultas.

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("PEDIDO")
WS.Visible = True

'Aqui coloque quando a data irá expira
Edate = Format([H4], "DD/MM/YYYY")

If Date > Edate Then ' + [B1] Then
MsgBox " TABELA DESATUALIZADA !"
UserForm1.Show
Else
Exit Sub
End If
End Sub

-------------------------------------------------------------------------------------

Na Useform esta assim:

Private Sub Sair_Click()
'Botao Sair

Application.Quit


End Sub

Private Sub Entrar_Click()
'Botao Entrar

If Senha.Text = "" Then
MsgBox "DIGITE A SENHA", vbInformation, "Erro"

ElseIf Senha.Text = "861485" Then
Unload UserForm1
Application.Visible = True

ElseIf Senha.Text <> "861485" Then
MsgBox "***USO RESTRITO*** TECLE - ( SAIR )", vbInformation, "Erro"

End If

End Sub

Private Sub UserForm_Initialize()
'esconder fundo

Application.Visible = False

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'nao deixar fecha mensagem MSGBOX

If CloseMode = vbFormControlMenu Then
Cancel = True
End If

End Sub


__________________________________________________________________________________________

Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 11:47
por LucasJose
Olá, como via?

Eu não costo de ser um estraga prazeres mas, tenho que te avisar que teu código é falho, pensa comigo
se o código bloqueia o acesso a planilha a partir da data do PC se simplesmente eu mudar a data do PC para uma data
na qual o arquivo não esteja bloqueado e assim a planilha não ficara bloqueada.

Agora respondendo a sua pergunta, não a como sair do Excel se as macos estiverem desabilitadas, logo que seria preciso das
macros para isso!
Já o segundo jeito é mais possível ocultando todas as telas no procedimento ao fechar a planilha, mas perceba que se a pessoa
que estiver a usar a planilha entender de vba, ela poderá simples mente habilitar as macros para entrar e antes de fechar desabilita-las
assim as abas não serão ocultas!

mesmo assim vou te passar o código:

Private Sub Workbook_Open()
Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name <> "abilite macros" Then
ActiveWorkbook.Worksheets(I).Visible = 1
End If
Next I
Sheets("abilite macros").Visible = 2
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WS_Count As Integer
Dim I As Integer

Sheets("abilite macros").Visible = 1

WS_Count = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name <> "abilite macros" Then
ActiveWorkbook.Worksheets(I).Visible = 2
End If
Next I

End Sub

O procedimento open, como já exite na sua pasta de trabalho o o encorpore.

blz, espero ter ajudado e te esclarecido, a falha de seu código, qualquer coisa me chame!

Re: Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 12:28
por fazerbem
Entao LucasJose, o meu codigo acima feito com a ajuda aqui dos colegas, desde que ele Habilite a Macro, esta funcionando redondo.

O Problema é se ele nao Habilitar a Macro. O fato da pessoa entender de Excel ou Macro, pra mim nao fará diferenca alguma, pois o que quero que a pessoa que vai usar a Tabela entenda, é que ele vai ter que usar esta Tabela e nao uma anterior, e se ele burlar nao Habilitando a Macro, nao sera aceito o pedido, pois vou saber.
O que acontece é que eu mando tabela as lojas semanalmente e a loja ao inves de usar a Tabela atualizada ele pega uma que ja esta gravada no computador dele e faz o pedido e me manda, ou monta um pedido e me envia 1 mês depois ! Dai tenho que ligar a ele ou mandar um email de novo com a tabela e assim ele fazer na tabela atualizada, dai la vai tempo nessa brincadeira.

Entao o que quero é fazer com que ele Habilite a Macro ao receber esta Tabela Atualizada ao qual eu coloquei uma validade,. Para isso a primeira tela que quero que apareca ao rodar a Tabela, lembrando que muitas das vezes ele roda a tabela diretamente do E-mail recebido, é a Tela de AVISO, onde estara escrito que para se ter acesso a Tabela será preciso Habilitar as Macros. Se ele nao Habilitar a Macro, entao a unica planilha a ser exibida será esta Tela de AVISO que nao estara Editavel e pretendo por um botao de Sair. As demais nao apareceram, porem se ele Habilitar a Macro, entao as demais Planilhas aparecem e esta de Aviso nao quero que apareça. Dando a entender que é preciso Habilitar a Macro, e ele habilitando, entao a rotina de Validade entra em acao, e assim meus problemas estarao resolvidos, pois dificilmente o lojista vai se prender a burlar etc.

So quero dificultar um pouco a ele.

A minha planilha de pedido possui as seguntes Abas:

AViso - Essa ficara Ativa se ele NÃO Habilitar a Macro, e ficara Oculta se Habilitar a Macro

Pedido - essa ficara ativa se Habilitada a Macro
Resumo - Idem
Novo - Idem

Clientes - é oculta estando ou nao Habilitada a Macro
Progressiva - Idem
COD - Idem

OBS: Caso ele nao Habilite a Macro existe como evitar que ele abra as Abas que estao Ocultas ?

Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 20:19
por LucasJose
Usuário Fazer bem, Olá!

olha se olhar nessa linha ActiveWorkbook.Worksheets(I).Visible = 2 o número 2 quer dizer que ela está oculta a nível de procedimento, assim só será possível reexibir no ambiente VBE (Visual Basic Editor), e se o mesmo estiver protegido não a verá como ele reexibir por si mesmo.

Me descule mas o código acima tem um erro então vou repassar o código já correspondente a sua necessidade:

Private Sub Workbook_Open()
Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count

For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name <> "AViso" Then
ActiveWorkbook.Worksheets(I).Visible = -1
End If
Next I
Sheets("AViso").Visible = 2
Sheets("Clientes").Visible = 0 '0 oculta a plan a nível de modulo, ou seja ele poderá reexibia caso queira que não possa faze-lo coloque 2
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count
Sheets("AViso").Visible = 0
For I = 1 To WS_Count
If ActiveWorkbook.Worksheets(I).Name <> "AViso" Then
ActiveWorkbook.Worksheets(I).Visible = 2
End If
Next I
End Sub

Espero que de tudo certo, inclemente o código na sua planilha e qualquer erro ou duvida estou aqui para ajudar!

Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 20:26
por fazerbem
oi amigo, estou indo pra casa, fiquei ate agora fazendo uma macro, que acabei de postar, amanha eu testo, e te falo. muito grato amigo.

abracos

andre

Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 20:46
por LucasJose
Colega, espero que de tudo certo!

Limitar o Tempo parte 3

Enviado: 25 Nov 2015 às 20:56
por fazerbem