Notifications
Clear all

Macro abrir planilha pelo IP da maquina

5 Posts
3 Usuários
0 Reactions
1,797 Visualizações
(@pedepano)
Posts: 18
Active Member
Topic starter
 

Como faço para ao abrir uma planilha, rode uma macro que só deixe a planilha abrir se o número de IP da maquina for igual ao número cadastrado no código

Um amigo postou um código para o nome de usuario da maquina, porem nem esse esta funcionando, pois mesmo eu colocando o nome de minha maquina o código continua mostrando a mensagem como se o nome não fosse igual.

Private Sub Workbook_Open()
If Environ("ComputerName") <> "NomeDaMaquina " Then
MsgBox "Computador nao autorizado"
End If
End Sub

Achei um outro código na internet semelhante, porem com algumas linhas a mais de código, porem o mesmo apresenta o mesmo erro..
Conseguir resolver o problema do Nome.
Porem não estou conseguindo trocar a opção de Nome de Usuario pelo IP da maquina.

 
Postado : 06/10/2018 2:11 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Opa!!

O código que postei é para o nome do Computador, esse é o nome da máquina na sua rede, aquele que vc coloca no windows.

Para o nome do usuário vc precisa trocar computername para username.

Qto a questão do IP vc pode olhar neste link

http://www.vbmania.com.br/index.php?mod ... &id=401993

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 06/10/2018 4:37 pm
(@pedepano)
Posts: 18
Active Member
Topic starter
 

MPrudencio

Sim, conseguir fazer usando seu código que verifica o nome da maquina..

Porem precisava de algo para o IP, onde apenas trocar o ("ComputerName") pelo código referente ao IP..

Na verdade andei pesquisando e o ideal é a macro ler o nº do HD da maquina, pois o IP pode repetir em outra rede.

Sub DriveSerialNumber()
    MsgBox Abs(CreateObject("Scripting.FileSystemObject").GetDrive("C:").SerialNumber)
End Sub

Tenho o código que busca o numero do HD porem ele retorna o numero em msgbox

Precisava que fosse algo parecido com o seu código mesmo, mais como estou aprendendo sobre vba, não faço a menor ideia de como fazer isso..
algo simples como o exemplo abaixo..

Private Sub Workbook_Open()
If Environ("CODIGO QUE BUSCA PELO NUMERO HD") <> "NUMERO HD " Then
MsgBox "Acesso negado"
ActiveWorkbook.Close SaveChanges:=False

Else
MsgBox "Bem Vindo"
Mais os códigos de ações que queira executar

End If
End Sub
 
Postado : 06/10/2018 5:19 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Experimente isso!!

http://www.macoratti.net/d240207.htm

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 07/10/2018 8:36 am
fcarlosc
(@fcarlosc)
Posts: 453
Honorable Member
 

Boa-noite Pedepano

Tem um post recente do Reinaldo com o seguinte código:
cole todo esse código em: "EstaPasta_de_Trabalho"
na linha "strMeusVolumes(1) =" ......insira o nº de série do seu HD

Private Sub Workbook_Open()
    If MeuVolume(HDSerialNumber) = False Then ' Checking if current machine serial number is matching with required
        MsgBox "Não Autorizado"
        'ActiveWorkbook.Save
        'ActiveWorkbook.Close
    End If
End Sub

Private Function HDSerialNumber() As String
    Dim fsObj   As Object
    Dim drv     As Object
    Set fsObj = CreateObject("Scripting.FileSystemObject")
    Set drv = fsObj.Drives("C")

    HDSerialNumber = Left(Hex(drv.SerialNumber), 4) _
        & "-" & Right(Hex(drv.SerialNumber), 4)
End Function

Private Sub verVol()
MsgBox HDSerialNumber
End Sub

Private Function MeuVolume(strVol) As Boolean
Dim intCont As Integer
Dim strMeusVolumes(4) As String 'Altere a quantidade de acordo com sua necessidade
'Inclua aqui seus volumes
strMeusVolumes(1) = "1111-1111"
'strMeusVolumes(2) = "2222-2222"
'strMeusVolumes(3) = ""
'strMeusVolumes(4) = ""
'strMeusVolumes(5) = ""
'strMeusVolumes(6) = ""
'strMeusVolumes(7) = ""
'strMeusVolumes(8) = ""
'strMeusVolumes(9) = ""
'strMeusVolumes(10) = ""
'strMeusVolumes(11) = ""

For intContont = 1 To UBound(strMeusVolumes)
    If strVol = strMeusVolumes(intContont) Then
         MeuVolume = True
         Exit Function
     End If
Next intContont
    
End Function

 
Postado : 07/10/2018 4:03 pm