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