Notifications
Clear all

Bloquear Planilha de Excel

12 Posts
4 Usuários
0 Reactions
3,557 Visualizações
(@giovani-l)
Posts: 22
Eminent Member
Topic starter
 

Boa tarde Pessoal
Criei uma planilha, na qual um pessoal se mostrou interessado em comprar. Gostaria de saber se existe um meio de bloquear esta planilha para que as pessoas que eu vender não repassem para mais ninguém. Já coloquei senha e tals, mas isso não é suficiente. Já li algumas coisas a respeito que fala que dá para bloquear para a planilha identificar o nome do computador em que ela está, porém necessita usar aqueles códigos VBA que eu não entendo praticamente nada. Se alguém puder me ajudar ficarei grato

 
Postado : 02/12/2013 2:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde Giovani

Seja bem vindo ao fórum!

Movi teu tópico para o sub-fórum VBA & Macros.
Este local é exclusivo para a apresentação dos novos usuários do fórum.

At.te

Patropi - Moderador

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/12/2013 2:09 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Giovani L,

Boa Tarde!

Na minha modesta opinião, não há nada que você possa fazer que lhe dê 100% de garantia contra cópias piratas do seu trabalho. Mesmo esses códigos VBA's que você menciona (eu conheço um bocado deles: o que grava o nome do usuário, o número do HD, o nome do computador, etc) são ineficazes. Toda e qualquer planilha Excel, por mais protegida que esteja (com senhas, inclusive nos projetos VBA) podem ser aberta no BrOffice (Pacote de escritório gratuito, atualmente de propriedade da Oracle) sem a necessidade de se digitar um único algarismo da senha. Fica simplesmente visível para qualquer um que quiser.

Fora uisso, existe ainda um "sem número" de aplicativos, gratuitos e pagos, disponíveis na internet, que quebram qualquer tipo de senhas.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 02/12/2013 2:19 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Geovane, como o Wagner disse, 100% de segurança fica complicado, você tentar reforçar...
http://office.cursosguru.com.br/excel/c ... xcel-2010/
http://www.tecmundo.com.br/excel/1359-e ... -guias.htm
http://www.superdicas.com.br/excel/excel18.asp
http://www.exceltip.com/excel-general/e ... protection
Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/12/2013 2:40 pm
(@giovani-l)
Posts: 22
Eminent Member
Topic starter
 

Wagner,
No meu caso, qualquer um desses bloqueios que você citou já seria de grande ajuda. A planilha que eu criei é destinada a um tipo de publico mais leigo que não conhece muito esses métodos para desbloquear e tals. Será que teria como você me ajudar a criar algum destes tipos de bloqueios? Lembrando que não entendo muito de vba.

 
Postado : 02/12/2013 7:39 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Por favor, leia os liks que eu postei !!

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 02/12/2013 7:42 pm
(@giovani-l)
Posts: 22
Eminent Member
Topic starter
 

Boa noite Alexandre
Obrigado pelos links, mas lá só informa sobre proteção por senha, ocultar formulas e coisas do tipo. Isto eu já tinha conseguido fazer na minha planilha, porém preciso de algo a mais ainda. Só com senha a pessoa pode compartilhar tanto a planilha quanto a senha

 
Postado : 02/12/2013 7:49 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Giovani L,

Bom Dia!

Vamos ver se consigo te ajudar.

O Arquivo anexo (Pré-Instalação.xlsm) contém o código de uma função que pega o número do HD da máquina onde ele for executado. Esse código não é meu. Peguei na internet e, infelizmente, não sei o nome do autor para lhe conceder os devidos créditos.

Na máquina onde você for instalar o seu aplicativo, você deve pedir a pessoa que abra o arquivo Pré-Instalação.xlsm e o devolva depois para você. Ou você mesmo deve abrir o arquivo na máquina desejada.

O que o arquivo faz:
Assim que é aberto, ele pega o número do HD daquela máquina e grava na célula ZZ1 (Essa célula está com a cor BRANCA e está oculta). Depois disso, o próprio código salva o arquivo e o fecha automaticamente. Ou seja, que não entende nada de macros, VBA, achará que o arquivo não está funcionando, pois ele abre (e após o usuário habilitar a utilização de macros) e fecha logo em seguida.

Agora, com esse arquivo em mãos, você vai abrir na sua máquina, sem habilitar a opção de macros. Porque senão você não conseguirá ver o que está na célula ZZ1, pois ele sempre abrirá e fechará. Desabilite pois a inicialização das macros e vá até a célula ZZ1 (F5/ZZ1/ENTER). Reexiba a coluna ZZ (marque as colunas ZY:AAA, clique com o botão direito do mouse e selecione Reexibir). Finalmente, mude a cor da célula ZZ1 para ver o que tem lá registrado. Esse é o numero do HD que você precisa.

Para finalizar, você precisa inserir o código abaixo, na ferramenta que você criou, de modo que antes da planilha ser executada, seja verificado antes se aquele HD é o mesmo que você já tem previamente. Para inserir o código abaixo você deve fazer o seguinte:
1 - Estando na sua ferramenta Excel, acesse o editor do VBA (ALT + F11). Aparecerá a interface do VBA.
2 - Do lado esquerdo da sua tela, você poderá ver uma janela chamada Projeto - VBAProject com alguns ítens inseridos nela (como se fosse o explore). Dê um clique duplo no ítem EstaPasta_de_trabalho. Isso fgará surgir, do lado direito do seu monitor, a janela de edição de códigos do VBA. Note que essa janela possui duas caixas combo na parte superior. A da esquerda está escrito(Geral) e a da direita está escrito (Declaração).
3 - Na caixa combo da esquerda, clique na seta e selecione o objeto Workbook. O VBA vai inserir duas linhas de códigos e vai mudar a caixa combo da direita de maneira a refletir o evento Open que está ativo nesse momento. Ou seja: tudo que for digitado entre essas duas linhas de código que foram inseridas, vai ser executado sempre que a planilha for aberta. Desse modo, é aqui que precisamos checar se o HD onde está instalado sua ferramenta, é mesmo aquele HD que você já capturou o número.
4- Agora basta inserir o código abaixo (copie todo o código abaixo e cole, inclusive, por cima das duas linhas já existentes). Para fins didáticos, vamos supor que o número do HD que você já capturou seja 12345678. Assim o código de verificação seria:

Private Declare Function GetVolumeInformation Lib _
        "kernel32" Alias "GetVolumeInformationA" _
        (ByVal lpRootPathName As String, ByVal _
        lpVolumeNameBuffer As String, ByVal _
        nVolumeNameSize As Long, _
        lpVolumeSerialNumber As Long, _
        lpMaximumComponentLength As Long, _
        lpFileSystemFlags As Long, ByVal _
        lpFileSystemNameBuffer As String, ByVal _
        nFileSystemNameSize As Long) As Long
Private Sub Workbook_Open()
    Dim NúmeroHD As Long
    NúmeroHD = DriveSerial("C:\")
    'Aqui você está verificando o número do HD. Se não for igual ao que você já tem, fecha o arquivo
    If NúmeroHD <> 12345678 Then ActiveWorkbook.Close
End Sub
'Saber o Número Serial do HD
'Num módulo:
Public Function DriveSerial(ByVal Drive As _
       String) As Long
  
  'Valor que retornará o serial do HD
  Dim RetVal As Long

  Dim HDNameBuffer As String * 256 'Nome do HD
  Dim FSBuffer As String * 256     'FS do HD
  Dim a As Long                    'auxiliar
  Dim b As Long                    'auxiliar

  Call GetVolumeInformation(Drive, HDNameBuffer, _
       256, RetVal, a, b, FSBuffer, 256)

  DriveSerial = RetVal
End Function

Abaixo, segue os dois arquivos (Pré-Instalação.xlsm e um arquivo exemplo de teste de HD - Teste de HD.xlsm)

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/12/2013 7:11 am
(@giovani-l)
Posts: 22
Eminent Member
Topic starter
 

Boa tarde Wagner
Consegui fazer toda essa parte para conseguir o numero do hd, porém quando chega na hora de salvar depois de inserir o código vem uma mensagem dizendo

"os recursos a seguir não podem ser salvos em pastas de trabalho sem macro:
-projeto VB
Para salvar um arquivo com esses recursos, clique em Não e escolha um tipo de arquivo habilitado para macro na lista Tipo de Arquivo"

O que faço agora? Esqueci de mencionar que essa planilha que tenho é apenas com fórmulas, não apresenta nenhum macro. Deveria funcionar mesmo assim?

 
Postado : 03/12/2013 11:10 am
(@giovani-l)
Posts: 22
Eminent Member
Topic starter
 

Consegui Wagner, muito obrigado cara, vai ser muito útil pra mim.
Antes o erro estava ao salvar a planilha, eu não estava selecionando planilha habilitada para macro. E também quando eu colei o código no bloco de notas eles separou uma palavra, provocando um erro. Mas agora está tudo certo. Obrigado

 
Postado : 03/12/2013 11:35 am
(@gtsalikis)
Posts: 2373
Noble Member
 

vc não criou macros, mas o código usado para bloquear pelo número do hd é como uma macro. Por isso vc precisa salvar como *.xlsm

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 03/12/2013 11:36 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Beleza, Giovani.

Legal que tenha dado certo.

Precisando, estou às ordens.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 03/12/2013 4:38 pm