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