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
#45771
Pessoal, boa tarde!

Tenho uma planilha que gera orçamentos para minha empresa e quero compartilhá-la com vendedores externos, porém preciso bloquear a opção de "Salvar Como" para que ele não crie copias, bem como a opção de "Salvar" para que ele não salve alterações na planilha modelo.

Encontrei na internet o código abaixo, mas não consegui botar para funcionar. Caso alguem saiba o que está de errado nele, ou saiba de outro modo de fazer o que eu preciso seria de grande ajuda.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
Cancel = True
Application.EnableEvents = False
ThisWorkbook.Save
MsgBox "A Opção 'Salvar Como' está desabilitada!"
Application.EnableEvents = True
End If
End Sub

Muito obrigado!

Att,

Daniel
#45797
Olá Daniel,

Essa macro apenas transforma um SALVAR COMO em um salvamento normal, mas salva!

Se você quer que não salve, tente a macro abaixo.
Código: Selecionar todos
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
    MsgBox "Esta planilha não pode ser salva!"
End Sub
Saiba que essa proteção é muito frágil. Quem tem um pouquinho de conhecimento de macros, desarma essa proteção e terá liberdade para salvar.
...porém preciso bloquear a opção de "Salvar Como" para que ele não crie copias, bem como ...
Cuidado pois copias ele pode criar pelo Windows Explorer, sem precisar entrar no Excel.

Jimmy
#45879
Boa tarde,

O código que você mandou realmente funciona, mas ainda continuo com um problema.

Eu abro o arquivo modelo (o qual quero fornecer para um terceiro e ele não possa salvar) e coloco o código, então eu não consigo salvar. Dessa forma quando eu abro o arquivo novamente ele não está com o código que coloquei.

Sabe como consigo resolver isso?

Muito obrigado!

Att,

Daniel
#45886
Eu abro o arquivo modelo (o qual quero fornecer para um terceiro e ele não possa salvar) e coloco o código, então eu não consigo salvar. Dessa forma quando eu abro o arquivo novamente ele não está com o código que coloquei.
É verdade!!! kkkkkkkkk Você não consegue trancar a gaveta com a chave dentro. Não tinha me tocado disso.

Ponha também a seguinte macro
Código: Selecionar todos
Sub ChaveDentro()
Application.EnableEvents = false
End Sub
E execute-o momentos antes de salvar e fechar o arquivo. Ele inibe a execução do outro código (somente nessa seção, ao reabrir o arquivo a inibição não existirá mais), logo, conseguirá salvar.

Dê retorno.

Jimmy San Juan
#47353
Boa tarde!

As instruções que você me deu acima funcionaram perfeitamente, mas percebi que ficou uma brecha.

O usuário ainda pode conseguir fazer uma cópia da planilha, sabe como podemos travar essa possibilidade também?

Att,
#47364
Jimmy em 29/jul/2019 escreveu:Cuidado pois copias ele pode criar pelo Windows Explorer, sem precisar entrar no Excel.
Ai foge da esfera do Excel e cai na do Wndows.

Uma opção é você colocar dentro da macro uma verificação se a macro está executando no HD em que a macro espera. Se não estiver, emite uma mensagem e aborta a execução.

O problema é que se o usuário trocar o HD da máquina, a macro deve ser readaptada para o número do HD novo.

Jimmy San Juan
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