'
' /////////////////////////////////////////////////////////////
' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) //
' // //
' // Web: http://InfrAngeluX.Sytes.Net/ //
' // //
' // |-> Pueden Distribuir Este Codigo siempre y cuando //
' // no se eliminen los creditos originales de este codigo //
' // No importando que sea modificado/editado o engrandesido //
' // o achicado, si es en base a este codigo //
' /////////////////////////////////////////////////////////////
' // //
' // Cls_ExcelAplication.cls //
' // //
' /////////////////////////////////////////////////////////////
'
Rem Opciones.
Option Explicit
Rem End Opciones.
Rem Eventos.
Event Errores(ByRef Err As ErrObject)
Rem End Eventos.
Rem Declaraciones.
Private Obj_Excel As Object
Rem End Declaraciones.
Rem Propiedades.
' // <Metodo Tipo = Propetiedad Acceso=Publico>
' // <Objetivo>
' // * Obtiene la instancia de la aplicacion!¡..
' // </Objetivo>
' // <Return Tipo=Object Parcial={Excel.Application}>
' // Regresa el Objeto {Excel.Application}.
' // </Return>
' // </Metodo>
Public Property Get Excel() As Object
Set Excel = Obj_Excel
End Property
' // <Metodo Tipo = Propetiedad Acceso=Publico>
' // <Objetivo>
' // * Obtiene un libro segun los criterios, 1 HOJA!¡..
' // </Objetivo>
' // <Evaluaciones>
' // * Si no existe el libro se crea uno nuevo!¡, solo por busqueda {Index&}.
' // * Si no se ingresa ningun parametro Opcional se crea un nuevo libro y es devuelto!¡.
' // </Evaluaciones>
' // <Parametros>
' // <Opcional Nombre=Index& Datotipo=Long Predeterminado=-1>
' // indice del libro a buscar!¡.
' // </Opcional>
' // <Opcional Nombre=Hoja Datotipo=Object Predeterminado=Nothing>
' // Ignora el parametro {Index&} y procede a buscar en TODOS los libros abiertos la hoja deseada.
' // </Opcional>
' // </Parametros>
' // <Return Tipo=Object Parcial=Workbook>
' // Regresa el libro {Workbook} deseado!¡.
' // </Return>
' // </Metodo>
Public Property Get Libro(Optional ByRef Index& = -1, Optional ByRef Hoja As Object = Nothing) As Object
On Error GoTo EventoError
Dim Lng_IndexLibro&
Dim Lng_IndexHoja&
If Index& <= 0 Then
Index& = Excel.Workbooks.Count
End If
If Index& <= 0 And Hoja Is Nothing Then
Index& = 1
Set Libro = Excel.Workbooks.Add
With Libro
For Lng_IndexHoja& = 1 To .Worksheets.Count - 1
.Worksheets(Lng_IndexHoja&).Delete
Next
End With
Else
If Hoja Is Nothing Then
Set Libro = Excel.Workbooks(Index&)
Else
With Excel
For Lng_IndexLibro& = 1 To .Workbooks.Count
With .Workbooks(Lng_IndexLibro&)
For Lng_IndexHoja& = 1 To .Worksheets.Count
If .Worksheets(Lng_IndexHoja&) Is Hoja Then
Set Libro = Excel.Workbooks(Lng_IndexHoja&)
Index& = Lng_IndexLibro&
Exit Property
End If
Next
End With
Next
End With
End If
End If
Exit Property
EventoError:
RaiseEvent Errores(Err)
Err.Clear
End Property
' // <Metodo Tipo = Propetiedad Acceso=Publico>
' // <Objetivo>
' // * Obtiene una Hoja de libro segun los criterios.
' // </Objetivo>
' // <Evaluaciones>
' // * Si no existen Libros se crea uno nuevo.
' // * Si no existen Hojas se crea una nueva en el libro.
' // * Si no se ingresa ningun parametro Opcional se crea un nuevo Libro, y Hoja son devueltos.
' // </Evaluaciones>
' // <Parametros>
' // <Opcional Nombre=Index& Datotipo=Long Predeterminado=-1>
' // indice de la Hoja a buscar!¡.
' // Si el parametro es superior a la cantidad de hojas en el libro o si es negativo
' // Creara una nueva Hoja.
' // </Opcional>
' // <Opcional Nombre=Book Datotipo=Object Predeterminado=Nothing>
' // Indica el libro donde se buscada, si se deja {Nothing} creara uno nuevo
' // y en el parametro {index&} devolvera la posicion de la hoja.
' // </Opcional>
' // </Parametros>
' // <Return Tipo=Object Parcial=Workbook>
' // Regresa la Hoja {Worksheets} Indicada.
' // Parametro {Book} Regresa el libro en dado caso que no se aya indicado alguno.
' // PArametro {Index&} Regresa el index de la hoja en el libro indicado en el parametro {Book}, igual si fuese Creado.
' // Regresa el
' // </Return>
' // </Metodo>
Public Property Get Hoja(Optional ByRef Index& = -1, Optional ByRef Book As Object = Nothing) As Object
On Error GoTo EventoError
Dim Lng_IndexLibro&
Dim Lng_IndexHoja&
If Book Is Nothing Then
Set Book = Libro(Index&)
End If
If Index& <= 0 Then
Set Hoja = Book.Worksheets.Add
Index& = Book.Worksheets.Count
Else
With Book
If .Worksheets.Count < Index& Then
Index& = .Worksheets.Count
End If
Set Hoja = .Worksheets(Index&)
End With
End If
Exit Property
EventoError:
RaiseEvent Errores(Err)
Err.Clear
End Property
Rem End Propiedades.
Rem Eventos de Modulo de Clase.
' // <Metodo Tipo=Proceso Acceso=Local>
' // <Objetivo>
' // * Crea la instancia de la aplicacion!¡..
' // </Objetivo>
' // </Metodo>
Private Sub Class_Initialize()
On Error GoTo EventoError
Set Obj_Excel = CreateObject("Excel.Application")
Exit Sub
EventoError:
RaiseEvent Errores(Err)
Err.Clear
End Sub
' // <Metodo Tipo=Proceso Acceso=Local>
' // <Objetivo>
' // * Liberacion de Memoria.
' // </Objetivo>
' // <Evaluaciones>
' // * Si hay libros abiertos o cargado los descarga.
' // * Si existe la instancia de la aplicacion la clierra
' // </Evaluaciones>
' // </Metodo>
Private Sub Class_Terminate()
On Error Resume Next
Dim Lng_IndexLibro&
With Excel
For Lng_IndexLibro& = 1 To .Worksheets.Count
.Worksheets(Lng_IndexLibro&).Close
Set .Libro = Nothing
Next
End With
If Not Obj_Excel Is Nothing Then
Call Obj_Excel.Quit
Set Obj_Excel = Nothing
End If
Err.Clear
End Sub
Rem End Eventos de Modulo de Clase.