Este código lo copié de alguna respuesta de este grupo, te permite hacer la consulta del ruc en línea con SUNAT usando el número de ruc, o puedes usar el número dni creando un código que recorra del 0 al 9 para obtener el código verificador.
Local XRUC As String
Declare Long InternetAttemptConnect In "wininet" Long dwReserved
If InternetAttemptConnect(0) = 0
XRUC = Thisform.Txruc.Value
#Define CRLF Chr(13)+Chr(10)
Local oErr As Exception
Local cStr As Character
Local SW As Boolean
SW = .T.
Local loXmlHttp As Microsoft.XMLHTTP,;
lcURL As String,;
lcHTML As String,;
lcTexto As String,;
lcFile As String
loXmlHttp = Createobject("Microsoft.XMLHTTP")
lcURL = "http://www.sunat.gob.pe/w/wapS01Alias?ruc="+XRUC
loXmlHttp.Open("POST" , lcURL, .F.)
loXmlHttp.Send
* Wait Window "Consultando a la SUNAT..." Nowait
Do While loXmlHttp.readyState<>4 Or loXmlHttp.Status <>200
Enddo
lcHTML = loXmlHttp.Responsetext
lcTexto = Chrtran(Alltrim(lcHTML),Chr(10),"")
*/Para los delimitadores
lcTexto = Strtran(lcTexto, "Número Ruc. </b> " + XRUC + " -","RazonSocial:")
lcTexto = Strtran(lcTexto, "Estado.</b>","Estado:")
lcTexto = Strtran(lcTexto, "Agente Retención IGV.</strong>","ARIGV:")
lcTexto = Strtran(lcTexto, "Dirección.</b><br/>","Direccion:")
lcTexto = Strtran(lcTexto, "Situación.<b> ","Situacion:")
lcTexto = Strtran(lcTexto, "Teléfono(s).</b><br/>","Telefono:")
lcTexto = Strtran(lcTexto, "Dependencia.","Dependencia:")
lcTexto = Strtran(lcTexto, "Tipo.</b><br/> ","TipoPer:")
lcTexto = Strtran(lcTexto, "DNI</b> : ","DNI:")
lcTexto = Strtran(lcTexto, "Fecha Nacimiento.</b> ","FechNac:")
lcTexto = Strtran(lcTexto, Space(05),Space(01))
lcTexto = Strtran(lcTexto, Space(04),Space(01))
lcTexto = Strtran(lcTexto, Space(03),Space(01))
lcTexto = Strtran(lcTexto, Space(02),Space(01))
lcTexto = Strtran(lcTexto, Chr(09),"")
*** RAZON SOCIAL ***
PosIni = At("RazonSocial:", lcTexto)+12
PosFin = At("<br/></small>", lcTexto)-(At("RazonSocial:", lcTexto)+12)
xRazSocial = Substr(lcTexto,PosIni,PosFin)
xRazSocial = Strtran(xRazSocial,"Ñ","Ñ")
xRazSocial = Strtran(xRazSocial , "Ñ", "Ñ")
xRazSocial = Strtran(xRazSocial , "Á", "Á")
xRazSocial = Strtran(xRazSocial , "É", "É")
xRazSocial = Strtran(xRazSocial , "Í", "Í")
xRazSocial = Strtran(xRazSocial , "Ó", "Ó")
xRazSocial = Strtran(xRazSocial , "Ú", "Ú")
xRazSocial = Strtran(xRazSocial , "Á", "Á")
xRazSocial = Strtran(xRazSocial , "É", "É")
xRazSocial = Strtran(xRazSocial , "Í", "Í")
xRazSocial = Strtran(xRazSocial , "Ó", "Ó")
xRazSocial = Strtran(xRazSocial , "Ú", "Ú")
lcFile= "Datos_Contribuyente.txt"
Strtofile(xRazSocial+Chr(13)+Chr(10), lcFile)
*** ESTADO ***
PosIni = At("Estado:", lcTexto)+7
PosFin = (At("ARIGV", lcTexto)-32)-(At("Estado:", lcTexto)+7)
xEst = Substr(lcTexto,PosIni,PosFin)
Strtofile(xEst+Chr(13)+Chr(10) , lcFile,1)
*** AGENTE RETENEDOR IGV ***
PosIni = At("ARIGV:", lcTexto)+18
PosFin = At("ARIGV:", lcTexto)+20-(At("ARIGV:", lcTexto)+18)
xAR = Substr(lcTexto,PosIni,PosFin)
Strtofile(xAR+Chr(13)+Chr(10), lcFile,1)
*** DIRECCION ***
PosIni = At("Direccion:", lcTexto)+10
PosFin = At("</b></small><br/>", lcTexto)-38-(At("Direccion:",lcTexto)+10)
xDir = Substr(lcTexto,PosIni,PosFin)
xDir = Strtran(xDir, "Ñ", "Ñ")
xDir = Strtran(xDir, "Ñ", "Ñ")
xDir = Strtran(xDir, "Á", "Á")
xDir = Strtran(xDir, "É", "É")
xDir = Strtran(xDir, "Í", "Í")
xDir = Strtran(xDir, "Ó", "Ó")
xDir = Strtran(xDir, "Ú", "Ú")
xDir = Strtran(xDir, "Á", "Á")
xDir = Strtran(xDir, "É", "É")
xDir = Strtran(xDir, "Í", "Í")
xDir = Strtran(xDir, "Ó", "Ó")
xDir = Strtran(xDir, "Ú", "Ú")
Strtofile(xDir+Chr(13)+Chr(10), lcFile,1)
*** SITUACION ***
PosIni = At("Situacion:", lcTexto)+10
PosFin = At("</b></small><br/>", lcTexto)-(At("Situacion:", lcTexto)+10)
xCond = Substr(lcTexto,PosIni,PosFin)
Strtofile(xCond+Chr(13)+Chr(10), lcFile,1)
*** TELEFONO ***
PosIni = At("Telefono:", lcTexto)+9
PosFin = At("Dependencia:", lcTexto)-25-(At("Telefono:", lcTexto)+9)
xTelef = Substr(lcTexto,PosIni,PosFin)
Strtofile(xTelef+Chr(13)+Chr(10), lcFile,1)
*** TIPO DE PERSONA ***
PosIni = At("TipoPer:", lcTexto)+8
PosFin = At("DNI:", lcTexto)-29-(At("TipoPer:", lcTexto)+8)
xTipoPer = Substr(lcTexto,PosIni,PosFin)
Strtofile(xTipoPer+Chr(13)+Chr(10), lcFile,1)
*** DNI ***
PosIni = At("DNI:", lcTexto)+4
PosFin = At("FechNac:", lcTexto)-25-(At("DNI:", lcTexto)+4)
xDNI = Substr(lcTexto,PosIni,PosFin)
Strtofile(xDNI+Chr(13)+Chr(10), lcFile,1)
*** FECHA DE NACIMIENTO ***
PosIni = At("FechNac:", lcTexto)+8
PosFin = At("FechNac:", lcTexto)+18-(At("FechNac:", lcTexto)+8)
xFechNac = Substr(lcTexto,PosIni,PosFin)
Strtofile(xFechNac, lcFile,1)
endif
A este código yo le hice algunas adaptaciones, pero esto es lo mas cercano al código original que copié, espero te sirva.
Saludos
Rick.