Lipesoratto
Mensagens : 3 Data de inscrição : 09/11/2012
| Assunto: 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) | |
|
McJota
Mensagens : 16 Data de inscrição : 26/10/2012 Idade : 48
| Assunto: 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.... | |
|
Lipesoratto
Mensagens : 3 Data de inscrição : 09/11/2012
| Assunto: 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... | |
|
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: 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 | |
|
Lipesoratto
Mensagens : 3 Data de inscrição : 09/11/2012
| Assunto: [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] | |
|
Conteúdo patrocinado
| Assunto: Re: Impedir que a Planilha seja Aberta em outro local [RESOLVIDO] | |
| |
|