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#script #cantabilidad #libro #mayor #saldo #suma #excel |
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
