Notifications
Clear all

Executar pasta de trabalho em apenas um diretório [MACRO]

2 Posts
2 Usuários
0 Reactions
840 Visualizações
 lino
(@lino)
Posts: 8
Active Member
Topic starter
 

Pessoal, estou com uma enorme duvida aqui, e até agora não consegui resolvê-la.

É o seguinte. Eu preciso que ao abrir minha planilha, rode uma macro para verificar se ela está no caminho especificado, e então, rodar normalmente. Caso contrário, ela será fechada.

Meu objetivo é : Proteger a planilha de possíveis copias, onde restringirei sua execução ao verificar o diretório, pois se não estiver no caminho que eu configurei, ela será fechada.

Até aí eu consegui resolver sem problemas. Utilizei o seguinte código:

Private Sub Workbook_Open()


Const c_sCaminho = "C:arquivo.xlsm"
    
    'Desabilita a tecla Ctrl+Break
    Application.EnableCancelKey = xlDisabled
    
    If ThisWorkbook.FullName <> c_sCaminho Then
        MsgBox "Não é possível criar uma cópia do arquivo '" & _
          c_sCaminho & "'. Favor abrir a versão original." _
          , vbCritical
        ThisWorkbook.Close SaveChanges:=False
    End If

End Sub

Porém, o grande problema é que essa pasta de trabalho não será executada em apenas um computador. Irei distribuí-la para várias máquinas, e ao rodar nos demais computadores apresentaria o erro, é claro, pois o caminho não seria o mesmo. Eu não terei contato com cada um, isso teria que ser feito automáticamente.

Não consigo achar nenhuma solução para o problema, pesquisei e não encontrei nada do tipo.

Tive a seguinte ideia :

Fazer, de alguma forma, com que ao rodar a planilha, a macro verifique o diretório e busque por um determinado arquivo,e se encontrar, abrir normalmente.Um arquivo independente, mas como se fosse essencial para execução do outro.

Ex: No diretório da minha planilha TESTE tem um arquivo chamado ESSENCIAL.txt (não importa a extensão). Ao executá-la, a macro verificará se esse arquivo se encontra no diretório. Se sim, abrirá. Já se alguem copiar a planilha e trocá-la de lugar, ao executar , a macro não encontrará o arquivo ESSENCIAL.txt, e como esperado, se ele nao estiver no diretório ela nao abre.

Isso seria possível ?
Ou caso tenham algum outro método para resolver meu problema.
O que preciso é, que identifique o diretório que está instalado, independente do computador, e se for trocado ser barrado.

Obrigado desde já.

 
Postado : 12/05/2014 2:25 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Olha...

Esse tema de impedir cópia não autorizada já tem várias discussões aqui. Vc pode usar a busca do fórum, e vai ver que tem ideias de bloqueio por IP, por número do HD..., mas nenhuma é 100% segura.

Dito isso, o que vc pode fazer é criar uma planilha oculta com xlsheetveryhidden e incluir nela o caminho da pasta.

Assim, a macro faria o seguinte:

- Ao abrir o arquivo, verifica se o caminho existe (se a célula da plan oculta está preenchida).

- Se não houver caminho, vai preencher com o caminho atual.
- Se estiver preenchido, verifica se o caminho atual é o mesmo que consta na célula da plan oculta, e, se não for, fecha a plan.

 
Postado : 12/05/2014 4:09 pm