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

Añade tu respuesta

Haz clic para o