Linea no reconoce el formulario

Estoy creando un boton para guardar los datos ingresados en el formulario pero la linea en la que se asigna el formulario no reconoce el nombre.

Sub Guardar()

Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim i As Integer

' Obtener el documento actual
oDoc = ThisComponent

' Obtener la hoja de cálculo activa
oSheet = oDoc.Sheets(0)

' Obtener el formulario de la biblioteca de diálogos
' No reconoce el nombre del formulario
oForm = oDoc.DialogLibraries.getByName("Standard").getByName("Formulario")


' Obtener el número de filas con datos en la hoja de cálculo
i = oSheet.Rows.Count

' Insertar los datos del formulario en la siguiente fila vacía
oSheet.getCellByPosition(0, i).String = oForm.getByName("TxtNombre").Text
oSheet.getCellByPosition(1, i).String = oForm.getByName("TxtEdad").Value
oSheet.getCellByPosition(2, i).String = oForm.getByName("TxtSexo").Text
oSheet.getCellByPosition(3, i).String = oForm.getByName("TxtFecha").Date

End Sub

De antemano gracias por la ayuda que puedan brindarme

Muestra el error que te da.

1 Like

Este es el formulario que estoy usando

Prueba importar la biblioteca de diálogos, previo a llamar el formulario, quizás no reconozca el nombre.

' Obtener la hoja de cálculo activa
oSheet = oDoc.Sheets(0)

' Cargar la biblioteca de diálogos si no se ha cargado previamente
oDoc.DialogLibraries.loadLibrary("Standard")

' Obtener el formulario de la biblioteca de diálogos
oForm = oDoc.DialogLibraries.getByName("Standard").getByName("Formulario")

Por favor, confirma si esto que te han comentado resuelve tu problema.

Por otra parte, en tu código.

Esto NO devuelve la hoja activa, si no la primer hoja

oSheet = oDoc.Sheets(0)

Y esto NO re devuelve el número de filas con datos, si no la cantidad total de filas de la hoja

i = oSheet.Rows.Count
1 Like

Gracias voy a leer un poco mas

Todavia no consigo obtener el nombre del formulario, si pudiera darme una ayuda se lo agradeceria mucho, he implementado el siguiente codigo:

Sub Guardar()

Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim i As Integer

' Obtener el documento actual
oDoc = ThisComponent

' Obtener la hoja de cálculo activa
oSheet = oDoc.getCurrentController().getActiveSheet()

' Obtener el formulario de la biblioteca de diálogos
oForm = oDoc.DialogLibraries.getByName("Standard")


'Error no se encuentra el Formulario
oForm = oDoc.getCurrentController().getForm

’ oForm = oDoc.DialogLibraries.getByName(“Formulario”)

 i = 5

' Insertar los datos del formulario en la siguiente fila vacía
oSheet.getCellByPosition(0, i).String = oForm.getByName("TxtNombre").Text
oSheet.getCellByPosition(1, i).String = oForm.getByName("TxtEdad").Text
oSheet.getCellByPosition(2, i).String = oForm.getByName("TxtSexo").Text
oSheet.getCellByPosition(3, i).String = oForm.getByName("TxtFecha").Text

End Sub

pero… ¿estas usando un formularo o un cuadro de diálogo?

estoy usando un formulario

Si estas intentado usar el que aparece en la captura de pantalla del error que muestras, entonces no, no estas usando formulario, sino cuadro de diálogo.

image

En ese caso, como puedo hacer para llamar los datos que contiene?

Si editas tu primer mensaje y agregas tu archivo, te muestro como hacerlo.

le adjunto el archivo, si me puede ayudar en eso

Intento de Formulario.ods (12.6 KB)

Ya veo el error, tu tienes el cuadro de diálogo en Mis Macros y Dialogos, que solo esta en tu maquina, y tu estas intentado abrirlo desde el archivo… como puedes ver, en el archivo que anexas, NO existe el cuadro de diálogo en el.

image

debe ser que estan en la carpeta estandard de Mis Macros

Hola buenos dias le adjunto el archivo que contiene macros y cuadro de dialogo, si me puede ayudar como solucionar el problema del paso de datos a la hoja de calculo le agradeceria mucho

Intento de Formulario.ods (16.1 KB)

Es necesario que el formulario tenga los nombres de los elementos correctos
(“TxtNombre”, “TxtEdad”, “TxtSexo”, “TxtFecha”) para que se puedan asignar
los valores a las celdas de la hoja de cálculo.

Asumiendo que tienes un formulario activo en la hoja de cálculo y,
que los elementos del formulario están correctamente nombrados
puede que el siguiente código te funcione:

Sub Guardar()

Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim i As Integer

' Obtener el documento actual
oDoc = ThisComponent

' Obtener la hoja de cálculo activa
oSheet = oDoc.getCurrentController().getActiveSheet()

' Obtener el formulario
oForm = oDoc.getCurrentController().getForm()

i = 5

' Insertar los datos del formulario en la siguiente fila vacía
oSheet.getCellByPosition(0, i).String = oForm.getByName("TxtNombre").Text
oSheet.getCellByPosition(1, i).String = oForm.getByName("TxtEdad").Text
oSheet.getCellByPosition(2, i).String = oForm.getByName("TxtSexo").Text
oSheet.getCellByPosition(3, i).String = oForm.getByName("TxtFecha").Text

End Sub

Gracias, le agrdezco micho