Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por fazerbem
Posts
#5314
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


__________________________________________________________________________________________
Por LucasJose
Posts
#5318
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!
Por fazerbem
Posts
#5321
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 ?
Por LucasJose
Posts
#5333
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!
Por fazerbem
Posts
#5335
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
Por LucasJose
Posts
#5336
Colega, espero que de tudo certo!
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord