fbpx

Tutorial Excel para Consultas DNI RENIEC

dni consulta de datos reniec excel macroTutorial Excel para Consultas DNI RENIEC: En este artículo te explicaré desde cero como realizar una macro,  la cual conecte Excel con un sitio web que cuenta con información de RENIEC. Los datos que arrojen las consultas serán almacenados en nuestra hoja de cálculo, teniendo la opción de realizar múltiples consultas, por ahora solo podremos obtener a apartir de un dni los nombres y apellidos completos, a continuación mas detalles.

¿Desde que sitio web obtendremos los datos?

Usaremos una url que se genera al realizar una consulta en el portal del JNE (Jurado nacional de elecciones), al parecer se dejó de forma adrede para que otros sistemas tomen esta información, no podemos saber hasta cuando funcione, pero ya lleva años estando activa.

También debemos resaltar que solo podremos obtener información de personas mayores de edad.

consulta dni macro excel jne reniec

Para probar la url cambie los valores «nnnnnnnn» por el número de su DNI.

http://aplicaciones007.jne.gob.pe/srop_publico/Consulta/Afiliado/GetNombresCiudadano?DNI=nnnnnnnn

Url exacta desde donde obtendremos la información de las consultas de DNI.

Programando desde Excel

DESCARGA EL ARCHIVO

Descargar Consulta DNI Gratis.xls

A continuación dejo las macros utilizadas y su respectiva explicación, favor de tener en cuenta lo siguiente:

  • Cambiar >  por >
  • Cambiar & por &

Para realizar consultas individuales necesitamos de este código, he dejado comentarios explicando cada una de las líneas.

Módulo 1

Option Explicit 'para obligar a declarar todas las variables
Sub ConsultaDNI()
    On Error Resume Next 'para saltar los errores
    Dim IE As Object 'variable para internet explorer
    Dim Nombres  As Object 'variable que almacenará el resultado de la consulta de dni
    Dim rpta As String 'variable para verificar la consulta
    Dim Dni As Long 'variable para almacenar el N° de DNI
 
 
    With Hoja1
    .Range("d7:g9").ClearContents 'eliminamos el contenido de estas celdas antes de realizar la consulta
    Dni = .Range("E5").Value
    If Val(Dni) = 0 Then 'validamos que el dni sean de tipo numérico, si es texto la macro termina
        .Range("d7").Value = "Dni incorrecto"
        Exit Sub
    End If
 
    'se crea la conexión a internet explorer
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
    'navegamos la url indicada, al final colocamos la variable dni
.Navigate "http://aplicaciones007.jne.gob.pe/srop_publico/Consulta/Afiliado/GetNombresCiudadano?DNI=" _
        & Format(Dni, "00000000")
        .Visible = False 'el valor es falso para no ver cuando la web abre
    End With
    Do Until IE.ReadyState = READYSTATE_COMPLETE 'esperamos que cargue totalmente la web antes de extraer los datos
        DoEvents
    Loop
    Set Nombres = IE.Document.body 'obtenemos los nombres completos
    'revisamos el codigo fuente de la web para encontrar posibles errores
    If InStr(Nombres.innerhtml, "Server Error") > 0 Then
        .Range("D7").Value = "Dni no Existe en JNE"
        GoTo Termina
    End If
    'reemplazamos los palotes "|" por espacio vacío, para un tema de presentación
    rpta = Replace(Nombres.innertext, "|", " ")
    'validamos de que el resultado sea válido
    If rpta = "" Then
        .Range("D7").Value = "El DNI ingresado no existe ó no se realizó la consulta."
    Else
        .Range("D7").Value = rpta
    End If
 
Termina:
'si la consulta tuvo exito entonces cerramos la conexión y regresamos a excel ya con el resultado.
    Set IE = Nothing
    With Application
        .DisplayAlerts = True
    End With
    Application.StatusBar = "Consulta realizada."
 
    End With
 
End Sub

Módulo 2

Option Explicit 'para obligar a declarar todas las variables
 
Sub Consulta_Masiva()
Dim i As Integer
Dim UltimaF As Integer
'vamos a crear un bucle tomando como último valor el dni ingresado
'en la columna b de la hoja 'consultas múltiples'
UltimaF = Range("b65536").End(xlUp).Row
 
'empezamos el bucle desde la fila 4 hasta la ultima fila encontrada
For i = 4 To UltimaF
 
With Hoja1
 
'tomamos el valor del dni
.Range("e5").Value = Cells(i, "b").Value
'realizamos la consulta apoyandonos de la consulta individual
Call ConsultaDNI
'el valor obtenido lo colocaremos al costado del dni consultado.
Cells(i, "c").Value = .Range("d7:g7").Value
End With
Next i 'terminamos el bucle
 
MsgBox "Se han realizado todas las consultas.", vbInformation, "Consultas DNI"
'mediante este mensaje indicamos que el proceso ha terminado.
End Sub
Sub limpiar()
'macro para limpiar la información obtenida en la consulta múltiple
Dim rpta As Integer
rpta = MsgBox("Desea eliminar la información registrada?", vbInformation + vbYesNo, "Elimar Información")
If rpta = vbYes Then
Range("c4:d500").ClearContents
End If
End Sub

Hoja1 (consulta DNI)

Con este código logramos que al ingresar un valor en la celda E5 automaticamente se borre el contenido del rango D7:D9.

macro dentro de hoja en evento worsheet_change

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$5" Then
Range("d7:g9").ClearContents
End If
End Sub

Espero compartan este artículo, si alguna explicación no quedó clara, déjenme en los comentarios sus consultas.

REVISA ESTOS TEMAS SIMILARES


Suscríbete es gratis

Ingresa tu correo electrónico y te convertiré en un experto en Excel.

Agrega tu comentario

Comentarios
  1. Posted by Angel cerpa