¿En una exportación desde Access a Excel como se haría la suma de los campos de una columna?

Hago una exportación desde access a excel. Todo bien las columnas y las filas con los datos. Pero en una columna con valores necesitaría una suma al final. Probé varias formas, pero no me sale.

objExcel.ActiveSheet.Cells(V, 9) = (aca iria la sumatoria de la columna)

Aclaro que cada vez que se hace una exportación a un excel, la cantidad de filas varían, por lo que no es un rango fijo.

¿Alguna sugerencia?

2 Respuestas

Respuesta
1

Cuando no se sabe es mejor no responder burradas. Le dejo este ejemplo, el código no es de mi autoría pero me ha servido para esta clase de exportaciones.

TABLA

FORMUALARIO CON LOS DATOS PARA EXPORTAR

RESULTADO DE LA EXPORTACIÓN EN EXCEL

Observe que la columna vr_inventario es igual al total del formulario de Access.

CÓDIGO DEL BOTÓN EXCEL

Option Compare Database
Option Explicit
Private Sub btnExportar_Click()
  Dim AppExcel As Object
  Dim rst As DAO.Recordset
  Dim SQL As String
  Dim Y As Long
  Dim Acumula As Double
    On Error GoTo hay_error
    SQL = "SELECT * FROM tblproductos ORDER BY ID"
    Set rst = CurrentDb.OpenRecordset(SQL, dbOpenForwardOnly)
    Set AppExcel = CreateObject("Excel.application")
    AppExcel.Workbooks.Add
    With AppExcel.Sheets(1)
        With .Range("A:E")
            .Font.Name = "Calibri"
            .Font.Size = 9.5
            .ColumnWidth = 13
        End With
        With .Range("A1:E1")
            .Font.Size = 10
            .Font.FontStyle = "Bold"
            .Interior.ColorIndex = 15
        End With
        .Name = "Productos"
        .Cells(1, 1) = "ID"
        .Cells(1, 2) = "CODIGO"
        .Cells(1, 3) = "LOTE"
        .Cells(1, 4) = "DESCRIPCION"
        .Cells(1, 5) = "VR_INVENTARIO" '
        Y = 2
        While Not rst.EOF
             Acumula = Acumula + rst!vr_inventario
            .Cells(Y, 1) = rst!ID
            .Cells(Y, 2) = rst!codigo
            .Cells(Y, 3) = rst!lote
            .Cells(Y, 4) = rst!descripcion
            .Cells(Y, 5) = rst!vr_inventario
            Y = Y + 1: rst.MoveNext
        Wend
        Y = Y + 1
        .Cells(Y, 4) = "TOTAL"
        .Cells(Y, 4).Font.FontStyle = "Bold"
        .Cells(Y, 4).Font.Size = 12
        .Cells(Y, 4).Interior.ColorIndex = 8
        .Cells(Y, 5) = Acumula
        .Cells(Y, 5).Font.FontStyle = "Bold"
        .Cells(Y, 5).Font.Size = 12
    End With
    rst.Close: Set rst = Nothing
    AppExcel.Visible = True: Set AppExcel = Nothing
    Exit Sub
hay_error:
    If Not rst Is Nothing Then rst.Close: Set rst = Nothing
    If Not AppExcel Is Nothing Then AppExcel.DisplayAlerts = False: AppExcel.Quit: Set AppExcel = Nothing
End Sub

Ya es cuestión de que mejore el código y haga los cambios, puede editar la consulta SQL para filtrar algunos datos etc.

Respuesta

Las sumas (en Access) se hacen igual para Access que para cualquier otra aplicación, en definitiva lo que se obtiene es un dato.

.- Tenemos un origen (el conjunto de datos = dominio)
.- Se conoce el campo que tiene los valores a sumar.
.- Se desconoce si han de cumplir otra condición (se parte del supuesto que no se condicionan).

Con la función DSum:

objExcel.ActiveSheet.Cells(V, 9) = DSum("[campo a sumar]", "[origen de datos: consulta o tabla]")

En el supuesto de que tengan que cumplir una o mas condiciones, seria necesario conocerlas para 'traducírselas' a Access y así obtener resultados consistentes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas