Buscar en el blog

miércoles, 22 de septiembre de 2010

VBA-Workbook









Es el objeto siguiente a Application en el orden jerárquico de Excel.

El objeto Workbook recoge todos los métodos, propiedades y eventos realicionados con el libro.

Si lees este artículo hasta el final sabrás:


Como se nombra un libro
Como se abre
Como se guarda
Como se guarda con otro nombre
Como se copia
Como se activa
Como se añade uno nuevo
Como se cierra 
Donde se ubica 






Con el objeto Workbook, introducimos tres conceptos nuevos:


Colección 
Entenderemos como colección a un conjunto de objetos a modo de array.
La colección 
Workbooks es la que contiene todos los libros abiertos en Excel en undeterminado momento.

Evento 
Un evento es una situación que se produce por una determinada acción en un objeto.
Un evento habitual es el que se produce al hacer click sobre un botón.
A un evento, podemos asociarle código VBA.


Metodo
Es una instrucción VBA de acción inmediata sobre un libro.




A continuación veremos los principales eventos, métodos y propiedades de un libro.

EVENTOS 
El código VBA de los eventos que se producen en un libro, deben insertarse en el objeto  ThisWorkbook del proyecto VBA (VBA-Project) 



1) Evento Open
Se produce al abrir el libro. 

2) Evento SheetActivate
Se produce al activar una hoja del libro.
 

3) Evento SheetSelectionChange
Se produce al cambiar la selección en una hoja del libro
 

4) Evento SheetChange
Se produce al realizar un cambio en una celda de cualquier hoja del libro, excepto formatos.
 

5) Evento SheetBeforeDoubleClick
Se produce al realizar doble click en una celda de cualquier hoja del libro.
 

6) Evento SheetDeactivate
Se produce al desactivar una hoja del libro.
 

7) Evento BeforeSave
Se produce inmediatamente antes de guardar el libro.
 

8) Evento BeforeClose
Se produce inmediatamente antes de cerrar el libro.

PROPIEDADES

1) Propiedad Name
Devuelve el nombre del libro

Msgbox ActiveWorkbook.Name



2) Propiedad Saved
Permite eliminar la visualización del mensaje "¿Desea guardar los cambios efectuados en el libro?"
Admite los valores True/False.
Con el valor a True se eliminará el mensaje.
El valor por defecto es 
False.

ActiveWorkbook.Saved = True/False





3) Propiedad Path
Devuelve el directorio del libro.

Msgbox ActiveWorkbook.Path



FORMAS DE NOMBRAR

1) Libro activo
ActiveWorkbook

2) Libro que contiene la macro en ejecución
ThisWorkbook

3) Por el nombre

Workbooks("Mi Libro.xlsm")

4) Por su posición en la coleccion Workbooks

Workbooks(2)

5) Por medio de una variable

Dim Libro as Workbook
Set Libro = Workbooks("Mi Libro.xlsm")
Libro

6) Por medio de una variable en la colección

'Como objeto
Dim Libro as Workbook

For Each Libro in Worksbooks
   Libro.Save
Next

'Por posición
Dim Libro as integer
For Libro = 1 to Worksbooks.Count
   Workbooks(Libro).Save
Next

METODOS DEL LIBRO

1) Open
Abre un libro.

Workbooks.Open "C:\Mi Libro.xlsm"

2) Save
Guarda un libro.

ActiveWorkbook.Save 
ThisWorkbook.Save
Workbooks.("C:\Mi Libro.xlsm").Save
Workbooks(2).Save
Libro.Save

3) SaveAs
Guarda un libro con otro nombre.

ActiveWorkbook.SaveAs "C:\Mi Otro Libro.xlsm"
ThisWorkbook.SaveAs "C:\Mi Otro Libro.xlsm"
Workbooks.("C:\Mi Libro.xlsm").SaveAs "C:\Mi Otro Libro.xlsm"
Workbooks(2).SaveAs "C:\Mi Otro Libro.xlsm"
Libro.SaveAs "C:\Mi Otro Libro.xlsm"

4) SaveCopyAs
Guarda una copia de un libro con otro nombre.

ActiveWorkbook.SaveCopyAs "C:\Mi Otro Libro.xlsm"
ThisWorkbook.SaveCopyAs "C:\Mi Otro Libro.xlsm"
Workbooks.("C:\Mi Libro.xlsm").SaveCopyAs "C:\Mi Otro Libro.xlsm"
Workbooks(2).SaveCopyAs "C:\Mi Otro Libro.xlsm"
Libro.SaveCopyAs "C:\Mi Otro Libro.xlsm"


5) Add
Añade un libro vacio.

Workbooks.Add

6) Activate
Activa un libro. 

ThisWorkbook.Activate
Workbooks("C:\Mi Libro.xlsm").Activate
Workbooks(2).Activate
Libro.Activate

7) Close
Cierra un libro. 

ActiveWorkbook.Close
ThisWorkbook.Close
Workbooks("C:\Mi Libro.xlsm").Close
Workbooks(2).Close
Libro.Close

2 comentarios:

  1. wao, gracias por tan tremendo aporte, ahora si que estoy claro para trabajar con un libro en VBA. Muchisimas gracias, en verdad, esta de lujo, clara y precisa tu explicacion.

    ResponderEliminar
  2. Muy claro y exacto a mi nivel de conocimiento

    ResponderEliminar