Imprimir página | Cerrar ventana

Exportar datos de subform a Excel

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86629
Fecha de impresión: 31/Mayo/2023 a las 17:39


Tema: Exportar datos de subform a Excel
Publicado por: blackhog81
Asunto: Exportar datos de subform a Excel
Fecha de publicación: 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.



Respuestas:
Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web



Imprimir página | Cerrar ventana