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.
  • Avatar do usuário
  • Avatar do usuário
Por fazerbem
Posts
#5157
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
#5177
Boa tarde!!

Até onde sei, o código é compatível com as versões anteriores.

Att
#5201
Boa tarde!!!

Seria algo assim...
Código: Selecionar todos
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 !!!"
        UserForm1.Show
    Else
        Exit Sub
    End If
End Sub
Dentro do UserForm
Código: Selecionar todos
Private 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
#5209
Nao consegui fazer, entao envio em anexo para se puderem me ajudar .

Coloquei um texto explicando o que eu gostaria.

Grato
Você não está autorizado a ver ou baixar esse anexo.
#5222
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
Por fazerbem
Posts
#5223
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
Avatar do usuário
Por Parkeless
Posts Avatar
#5227
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."
Por fazerbem
Posts
#5232
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
#5237
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
Avatar do usuário
Por Parkeless
Posts Avatar
#5242
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
#5243
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
Por fazerbem
Posts
#5245
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
#5248
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 todos
Private 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.
Por fazerbem
Posts
#5249
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.
Por fazerbem
Posts
#5250
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.
Avatar do usuário
Por Parkeless
Posts Avatar
#5254
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.
Por fazerbem
Posts
#5256
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.
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