** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Exportar datos de subform a Excel
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Exportar datos de subform a Excel

 Responder Responder
Autor
Mensaje
blackhog81 Ver desplegable
Nuevo
Nuevo


Unido: 27/Abril/2022
Localización: barcelona
Estado: Sin conexión
Puntos: 13
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita blackhog81 Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Exportar datos de subform a Excel
    Enviado: 08/Marzo/2023 a las 11:27
Saludos,

Estoy creando una funciona ExportarExcel2() para intentar exportar los datos de una consulta insertada en un formulario de nombre CONSULTES_EXPLOTACIO, sin lanzar de nuevo la consulta, ja que el volument de datos es muy grande y es duplicar el proceso y la lentitud de la accion. Els subformulario que contiene la consulta se llama SUBOBJECTESFORM. El codigo es el siguiente:

Function ExportarExcel_2()
    Dim appExcel As Object
    Dim wb As Object
    Dim ws As Object
    Dim rst As DAO.Recordset
    Dim intColumna As Integer
    
    'Crea una nueva instancia de Excel
    Set appExcel = CreateObject("Excel.Application")
    appExcel.Visible = True
    
    'Crea un nuevo libro de Excel
    Set wb = appExcel.Workbooks.Add
    
    'Selecciona la hoja activa del libro de Excel
    Set ws = wb.ActiveSheet
    
    'Obtiene los datos del subformulario y los guarda en un Recordset
    Set rst = Consultes_Explotacio!SubObjectesForm.Form.RecordsetClone
    
    'Agrega los nombres de las columnas del subformulario a la primera fila del libro de Excel
    For intColumna = 0 To rst.Fields.Count - 1
        ws.Cells(1, intColumna + 1).Value = rst.Fields(intColumna).Name
    Next intColumna
    
    'Agrega los datos del subformulario a las filas del libro de Excel
    ws.Range("A2").CopyFromRecordset rst
    
    'Libera la memoria utilizada por el Recordset
    rst.Close
    Set rst = Nothing
    
    'Guarda y cierra el libro de Excel
    'wb.SaveAs "C:\Ruta\Archivo.xlsx"
    'wb.Close
    
    'Libera la memoria utilizada por las variables
    Set ws = Nothing
    Set wb = Nothing
    Set appExcel = Nothing
End Function

El problema esta siempre en la llamada al subformulario, no encuentra el objeto, lo he resaltado en negrita. Lo tengo que abrir primero, y esto es lo que no entiendo, si ya esta abierto el formulario principal que contiene el subformulario con los datos de la consulta, porque no encuentra el objeto. Si lo vuelvo a abrir es como relanzar la consulta, acaba siendo muy lento. Muchas gracias por todo. 
Buscando crecer en el nuevo mundo que me ha tocado como batalla en la actualidad.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 08/Marzo/2023 a las 16:23
Hola,

Prueba a poner el nombre del formulario "dentro" de un Forms (además utilizaré una alternativa de sintaxis) no sea que no sea capaz de determinar el objeto si no lo tiene abierto:

Set rst = Forms("Consultes_Explotacio").Controls("SubObjectesForm").Form.RecordsetClone

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable