Sistema de Gestión de Negocios "Hexa"

Base de datos de conocimiento.

Doc. Ref. 11168
Título: Libro Mayor en Excel
Autor: Hexa
Última actualización: 05/07/2016


documentos\Cliente-3223-HEXA-Balance de sumas y saldos en Excel-Doc.11168.htm

Libro Mayor en Excel

Generar desde Hexa listados en Excel mediante un script es muy sencillo

El siguiente script genera el libro mayor separado en una cuenta por hja en Excel. Se puede configurar como acción en un formulario de criterios eliminando las dos primeras líneas que definen los parámetros de criterio y orden (PS0 y PS1) o bien directamente en una opción de menú con los criterios especificados manualmente.

En el ejemplo el criterio especificado y el orden hacen que el listado salga para las cuentas que comienzan por "400" (proveedores) y para fechas posteriores al 1/5/2016.

También se puede de forma sencilla a partir de este ejemplo crear nuevas columnas, totales, etc.

Sub Main (PS0, PS1, PS2)
    PS0 = "Cuenta LIKE '400%' And Fecha > '1/5/2016'"
    PS1 = "Cuenta, Fecha, Numero"
    'Crear la hoja excel
    Set Hoja = CreateObject ("Excel.Application")
    Set Apunte  = CreateObject("ADODB.RecordSet") : Apunte.CursorLocation = 3 'AdUseClient
    Apunte.Open "SELECT Numero, Asiento, Fecha, Cuenta, Concepto, Debe, Haber, Contrapartida FROM Apunte" & FH.SQLWO ("" & PS0, "" & PS1), Cn: Set Apunte.ActiveConnection = Nothing
    CuentaActual = ""
    Hoja.Visible = -1 : Hoja.Workbooks.Add : H = 1
    Do While Not Apunte.EOF
        If Apunte.Fields("Cuenta") <> CuentaActual Then
            If H > 1 Then Hoja.Workbooks(1).Sheets.Add Null, Hoja.Workbooks(1).Sheets(Hoja.Workbooks(1).Sheets.Count)
            Hoja.Workbooks(1).Sheets(H).Activate
            Hoja.Workbooks(1).Sheets(H).Name = Apunte.Fields("Cuenta")
            CuentaActual = Apunte.Fields("Cuenta")
            Hoja.Cells(1, 1) = "'" & Apunte.Fields("Cuenta") & " - " & basededatos.cmp("Cuenta", "Descripcion", "Numero='" & Apunte.Fields("Cuenta") & "'", False)
            Hoja.Rows(1).Font.Bold = True
            Hoja.Rows(2).Font.Bold = True
            Hoja.Cells(2, 1) = "Apunte": Hoja.Cells(2, 2) = "Asiento": Hoja.Cells(2, 3) = "Fecha": Hoja.Cells(2, 4) = "Concepto": Hoja.Cells(2, 5) = "Debe": Hoja.Cells(2, 6) = "Haber": Hoja.Cells(2, 7) = "Saldo": Hoja.Cells(2, 8) = "Contrapartida"
            Hoja.Columns(3).NumberFormat = "m/d/yyyy": Hoja.Columns(4).ColumnWidth = 40: Hoja.Columns(5).NumberFormat = "#,##0.00": Hoja.Columns(6).NumberFormat = "#,##0.00": Hoja.Columns(7).NumberFormat = "#,##0.00": Hoja.Columns(8).ColumnWidth = 15
            FechaInicial = BaseDeDatos.Cmp ("Apunte", "Min (Fecha)", "" & PS0, False)
            DebeInicial = FH.Vac(BaseDeDatos.Cmp ("Apunte", "Sum (Debe)", "Cuenta = " & FH.sqlt (Apunte.Fields ("Cuenta")) & " And Fecha < " & FH.SQLT (FechaInicial), False))
            HaberInicial = FH.Vac(BaseDeDatos.Cmp ("Apunte", "Sum (Haber)", "Cuenta = " & FH.sqlt (Apunte.Fields ("Cuenta")) & " And Fecha < " & FH.SQLT (FechaInicial), False))
            Hoja.Cells(3, 5) = DebeInicial: Hoja.Cells(3, 6) = HaberInicial : Hoja.Cells(3, 7) = "=E3-F3"
            H = H + 1 : f = 4
        End If
        Hoja.Cells(f, 1) = Apunte.Fields("Numero"): Hoja.Cells(f, 2) = Apunte.Fields("Asiento"): Hoja.Cells(f, 3) = Apunte.Fields("Fecha"): Hoja.Cells(f, 4) = Apunte.Fields("Concepto"): Hoja.Cells(f, 5) = Apunte.Fields("Debe"): Hoja.Cells(f, 6) = Apunte.Fields("Haber"): Hoja.Cells(f, 7) = "=G" & F-1 & "+E" & F & "-F" & F: Hoja.Cells(f, 8) = "'" & Apunte.Fields("Contrapartida")
        Apunte.MoveNext
        f = f + 1
    Loop
    Apunte.Close : Set Apunte = Nothing
 End Sub

Volver a la búsqueda anterior