He visto esta función que calcula el NIF español:
Function LetraNif(dni As Long) As String
LetraNif = Mid(“TRWAGMYFPDXBNJZSQVHLCKE”, (dni Mod 23) + 1, 1)
End Function
¿Cómo podría hacer que funcione con Write?
Gracias
He visto esta función que calcula el NIF español:
Function LetraNif(dni As Long) As String
LetraNif = Mid(“TRWAGMYFPDXBNJZSQVHLCKE”, (dni Mod 23) + 1, 1)
End Function
¿Cómo podría hacer que funcione con Write?
Gracias
Lo importante en Writer es como pasarle el DNI y donde mostrar el NIF.
Sub main()
doc = ThisComponent
dni = InputBox("Captura el DNI")
nif = LetraNif(dni)
doc.Text.String = nif
End Sub
Function LetraNif(dni As Long) As String
LetraNif = Mid("TRWAGMYFPDXBNJZSQVHLCKE", (dni Mod 23) + 1, 1)
End Function
Tal y como me plantea el código recibo este error:
“variable de objeto no establecida”
He probado a añadir unas mofificaciones y pido perdón porque probablemente estoy haciendo una burrada, las cosas de un novato aprendiendo, pero resulta que funciona o casi:
Sub main()
doc = ThisComponent
dni = InputBox(“Captura el DNI”)
Dim nif As String
nif = LetraNif(dni)
doc.Text.String = dni & “-”&nif
End Sub
Function LetraNif(dni As Long) As String
LetraNif = Mid(“TRWAGMYFPDXBNJZSQVHLCKE”, (dni Mod 23) + 1, 1)
End Function
Y digo casi, porque cuando escribe el NIF borra el resto del documento, cada vez que lo ejecutas lo borra todo y lo sustituye por el NIF, algo mas hay que añadir
Si muestras la línea donde te da el error, podemos saber que pasa…
así es, con doc.Text.String
reemplazará todo el contenido… para no adivinar, ¿donde quieres que lo ponga?
He encontrado la solución en el manual Información útil de macros para OpenOffice.org (http://openoffice.org/) Por
Andrew Pitonyak este es el código que me funciona:
Dim oVCurs As Object
Dim oTCurs As Object
doc = ThisComponent
oText = doc.Text
dni = InputBox(“Captura el DNI”)
Dim nif As String
nif = LetraNif(dni)
oVCurs = doc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange (oVCurs.getStart())
oText.insertString(oTCurs, dni & “-”&nif , FALSE)
End Sub
Función LetraNif(dni As Long) As String
LetraNif = Mid(“TRWAGMYFPDXBNJZSQVHLCKE”, (dni Mod 23) + 1, 1)
Fin Función
Infinitas gracias elmau tu ayuda es inestimable