Calcular el NIF en Write

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?

Has de insertar el nif mientras escribes, pongo un pantallazo para expresarmen mejor

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