Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Lipesoratto



Mensagens : 3
Data de inscrição : 09/11/2012

MensagemAssunto: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]   Sex Nov 09, 2012 4:20 pm

Olá Pessoal,

Eu não possuo muito conhecimento em programar no Exel, Na verdade programo em delphi.

Mas estou precisando impedir a cópia de uma planilha para outro local.
Como não é possível Impedir no servidor a cópia da planilha, pensei que algum código VBA pudesse me ajudar.

Pensei numa logica assim:

após a planilha abrir, verificar se o local da planilha é = 'C:\\documentos\office' , se for então planilha liberada
Se não (em caso de cópia para outro local) aparece uma mensagem do tipo 'Planilha foi copiada' e fecha o exel

mais ou menos a lógica seria essa, mas não conheço os comandos
se tiverem outra lógica que tenha mais ou menos a mesma função pode postar

Preciso muito, desde já
Obrigado pessoal.


Última edição por Lipesoratto em Ter Nov 27, 2012 1:27 pm, editado 1 vez(es)
Voltar ao Topo Ir em baixo
Ver perfil do usuário
McJota



Mensagens : 16
Data de inscrição : 26/10/2012
Idade : 41

MensagemAssunto: Re: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]   Sex Nov 09, 2012 7:40 pm

Olá, boa tarde!
Você pode usar o GetDriveSerialNumber para bloquear a abertura da planilha em outros PCs.
Insira uma nova planilha com o nome "HD".
No desenvolvedor em EstaPasta_de_trabalho insira o seguinte código:

Public Function GetDriveSerialNumber(Optional ByVal DriveLetter As String) As Long
Dim fso As Object
Dim Drv As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If DriveLetter <> "" Then
Set Drv = fso.GetDrive(DriveLetter)
Else
Set Drv = fso.GetDrive(fso.GetDriveName(App.Path))
End If
With Drv
If .IsReady Then
DriveSerial = Abs(.SerialNumber)
Else
DriveSerial = -1
End If
End With
Set Drv = Nothing
Set fso = Nothing
GetDriveSerialNumber = DriveSerial
End Function

Private Sub Workbook_Activate()
On Error GoTo Erro
Dim x As Variant
x = GetDriveSerialNumber("C")
Worksheets("HD").Visible = xlSheetVisible
ThisWorkbook.Worksheets("HD").Activate
Range("A1").Select
If ActiveCell.Value = "" Then
ActiveCell.Value = x
Worksheets("HD").Visible = xlSheetVeryHidden
Else
ActiveCell.Offset(0, 1).Value = x
If ActiveCell.Value <> ActiveCell.Offset(0, 1).Value Then
Worksheets("HD").Visible = xlSheetVeryHidden
MsgBox "Esta cópia não está autorizada!", vbCritical, "Alerta!"
Application.DisplayAlerts = False
ThisWorkbook.Application.Quit
ActiveWorkbook.Close savechanges:=True
Application.DisplayAlerts = True
Else
Worksheets("HD").Visible = xlSheetVeryHidden
End If
End If
Erro:
Exit Sub
End Sub

Testa e vê se é isso que você precisa.

Abraço....
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Lipesoratto



Mensagens : 3
Data de inscrição : 09/11/2012

MensagemAssunto: Re: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]   Sex Nov 23, 2012 2:00 pm

Olá Mc Jota,

Agradeço a sua sugestão, mas ela não me serve porque acontece o seguinte:

Esses arquivos que quero impedir a abertura em outro local estão em uma pasta no Servidor, e algumas pessoas vão ter acesso a essa pasta porém vão acessar de lugares diferentes. quero evitar de copiarem o arquivo para um pendrive por exemplo e abrirem em casa ou em outro lugar que não seja no servidor.

por isso sugeri algo relacionado ao caminho do arquivo...

Se tiver outra sugestão agradeço.

Abraço...
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]   Dom Nov 25, 2012 1:01 am

Boa noite!!

Tente esse

O código deve ser posto dentro do evento da EstaPasta_de_trabalho
Código:
Private Sub Workbook_Open()
If Left(ThisWorkbook.FullName, 1) <> "C" Then
 MsgBox "Não encontrado a unidade C "
 ThisWorkbook.Close
End If
End Sub
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Lipesoratto



Mensagens : 3
Data de inscrição : 09/11/2012

MensagemAssunto: [Resolvido]   Ter Nov 27, 2012 1:24 pm

Muito Obrigado Alexandre

Era isso mesmo que estava procurando, Funcionou Direitinho!

Deus abençoe sua Vida!
Abç!

[RESOLVIDO]
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]   Hoje à(s) 2:51 am

Voltar ao Topo Ir em baixo
 
Impedir que a Planilha seja Aberta em outro local [RESOLVIDO]
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Legenda em cima do rank olhe:
» Escolher arquivo e copia-lo para outro lugar
» Como usar os alarmes para fazer aparecer outro objeto?
» Fazer um objeto seguir um outro objeto
» É proibido criar jogo baseado em outro ?

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: