Ejecutar una macro con una función personalizada (Function)
Tengo una macro ya creada(Consulta dni), lo que quiera hacer es crear una función personalizada, es decir mediante una fórmula en excel ejecutar esta macro. No se mucho de programación este código lo encontré en internet y lo adapte a mi excel, pero desde una celda en excel quiero ejecutar una fórmula para que la macro se ejecute con function... Ojalá me puedan ayudar .. Gracias
Sub ConsultaDNI()
'Esto es para controlar los errores
On Error Resume Next
'declaramos las variables a utilizar
Dim IE As Object
Dim Nombres, consulta, ubicacion As Object
Dim Rpta, Rpta2 As String
Dim Dni As String
'Esto es para evitar que aparescan alerta de mensajes
With Application
.DisplayAlerts = False
End With
'limpiamos el campo donde se obtendrán los nombres antes de empezar
'Celda que contendrá el n° de DNI | le damos formato de 8 digitos
Dni = Format(ActiveCell.Text, "00000000")
'evitamos que el dni contenga letras
If Not IsNumeric(Dni) Then
MsgBox "Solo se permite el ingreso de valores numéricos", vbCritical, "ERROR"
Exit Sub
End If
'Este es un mensaje en la barra de estado que indica que se está realizando la consulta.
Application.StatusBar = "Consultando ... "
'creamos el objeto para realizar la conexión a internet
Set IE = CreateObject("InternetExplorer.Application")
'Navegamos en la web
IE.Navigate "http://votoinformado.pe/voto/miembro_mesa.aspx"
'Creamos un bucle para esperar que la web cargue por completo.
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Desde Excel enviamos el número de RUC
IE.Document.all.Item("txtCongrDNI").Value = Dni
'Hacemos clic en el boton consultar
Set consulta = IE.Document.getElementbyId("btnCongrDNI")
consulta.Click
'Volvemos a esperar que la web cargue por completo
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Esperamos unos segundos para evitar que el servidor nos cancele.
Application.Wait (Now + TimeValue("0:00:03"))
''Extraemos el nombre del DNI consultado
Set Nombres = IE.Document.getElementbyId("lblNombres")
Rpta = Nombres.InnerText
Set ubicacion = IE.Document.getElementbyId("lblUbicacion")
Rpta2 = ubicacion.InnerText
'He realizado una actualización para obtener también la ubicación
'Si el valor consultado es vacío entonces alertamos con este aviso, caso contrario obtenemos el nombre de la persona y su ubicación.
If Rpta = "" Then
ActiveCell.Offset(0, 1).Value = "El DNI ingresado no existe ó no se realizó la consulta."
Else
ActiveCell.Offset(0, 1).Value = Rpta
End If
'Para que la consulta en la web no se vea, el valor debe ser Falso
IE.Visible = False
''Cerramos la conexión
IE.Quit
'Con esto limpiamos la variable.
Set IE = Nothing
'Regresamos a la normalidad
With Application
.DisplayAlerts = True
End With
'Con este mensaje indicamos que la consulta fue realizada.
Application.StatusBar = "Consulta realizada."
ActiveCell.Offset(1, 0).Select
Call ConsultaDNI
End Sub