You are on page 1of 8

Escritura de Visual Basic para las macros de aplicaciones (VBA), se trabaja con

objetos que pueden recibir instrucciones. El objeto Application es el objeto de nivel


superior en el modelo de objetos de Excel, y contiene:

Configuracin de toda la aplicacin y las opciones. Muchas de estas


opciones son las mismas que se encuentra en el cuadro de dilogo Opciones ,
disponible en el Backstage.

Mtodos para objetos de nivel superior, como, por


ejemplo, ActiveCell y ActiveSheet.
Este Visual artculo se muestra cmo realizar las tareas siguientes:

Colecciones comunes de acceso, como, por ejemplo, hojas, filas y columnas


Utilice activas propiedades (como las
propiedades ActiveCell y ActiveSheet)

Tener acceso a la seleccin actual

Mostrar cuadros de dilogo


Este Visual cmo se basa en Developers Guide al objeto Application de Excel
2007 por Frank Rice. Este artculo contiene informacin adicional y ejemplos de
cdigo y, en general la informacin de Excel 2007 tambin es vlida para Excel
2010.

Utilice la propiedad Application para devolver el objeto Application. Una vez que
una referencia a la aplicacin, para tener acceso a los objetos situados bajo el
objeto Application, baja la jerarqua del modelo de objeto, por ejemplo,
desde Application a Workbook a Worksheet a Cells.
VBA
Application.Workbooks(1).Worksheets(1).Cells(1,1)
Puede utilizar muchas de las propiedades y mtodos que devuelven los objetos de
interfaz de usuario ms comunes, como, por ejemplo, la hoja de clculo activa sin
el calificador de objeto Application. Por ejemplo, en lugar de escribir lo siguiente.
VBA
Application.ActiveSheet.Name = "Monthly Sales"
Puede escribir lo siguiente.
VBA
ActiveSheet.Name = "Monthly Sales"
Sin embargo, tenga cuidado cuando utilice estas notaciones de acceso directo que
tiene los correctos objetos seleccionados.

Hay unas pocas instancias donde debe utilizar el calificador de Application. Por
ejemplo, el mtodo OnTime necesita el calificador igual que las
propiedades Width y Height de la ventana de la aplicacin. En general, las
propiedades que estn relacionados con la apariencia de la ventana de Excel, o
que afectan al comportamiento general de la aplicacin requieren el calificador
de Application. Por ejemplo, la propiedad DisplayFormulaBarque se utiliza para
mostrar u ocultar la barra de frmulas y el mtodo Calculate requiere el calificador.
Colecciones
Desde el objeto Application, puede obtener varios tipos de colecciones tiles. Esta
seccin describe las colecciones que se puede tener acceso.
Columnas y filas
Para seleccionar la cuarta columna, puede utilizar la propiedad Columns.
VBA
Application.Columns(4).Select
De forma similar, para seleccionar la cuarta fila, puede utilizar la
propiedad Rows.
VBA
Application.Rows(4).Select
sheets
En el ejemplo de cdigo siguiente se recorre todas las hojas de clculo del
libro e imprime las hojas de clculo que contienen los rangos de datos.
Tenga en cuenta que la coleccin de Sheets se utiliza como una propiedad
del objeto Application.
VBA
For iSheet = 1 To Application.Sheets.Count
If Not IsEmpty(Application.Sheets(iSheet).UsedRange) Then
Application.Sheets(iSheet).PrintOut copies:=1
End If
Next iSheet
Propiedades del objeto
Para tener acceso a los distintos objetos de la aplicacin Excel 2010, hay un gran
nmero de propiedades de Application: demasiados comentar aqu.
Incluyen ActiveCell, ActiveChart, ActiveSheet, ActiveWindow, ActiveWorkbook, Ran
geSelection, Selection, StatusBar y ThisWorkbook (propiedades). Hay pocos que
utiliza con frecuencia. Empecemos por la propiedad ActiveCell.
ActiveCell
La propiedad ActiveCell del objeto Application devuelve un
objeto Range que representa la celda activa en la hoja activa en el libro
activo. Si no especifica un calificador de objeto, esta propiedad devuelve la
celda activa en la ventana activa. Tenga cuidado para distinguir entre la
celda activa y una seleccin de celdas. La celda activa es una nica celda
dentro de la seleccin actual. La seleccin puede contener una coleccin de
celdas, pero slo una es la celda activa. En el ejemplo de cdigo siguiente
se cambia el formato de fuente de la celda activa. Tenga en cuenta que para

asegurarse de que est trabajando con la celda correcta, hace el


mtodo Activate de la coleccin Worksheets que Sheet1 la hoja de clculo
activa.
VBA
Worksheets("Sheet1").Activate
With ActiveCell.Font
.Bold = True
.Italic = True
End With
ActiveChart
La propiedad ActiveChart devuelve un objeto Chart que representa el
grfico activo, ya sea un grfico incrustado o una hoja de grfico. Un grfico
incrustado se considera activo cuando est seleccionado o activado. En el
ejemplo de cdigo siguiente se utiliza la propiedadActiveChart para
agregar un grfico de columnas 3D a la hoja de clculo de Monthly Sales.
VBA
Charts.Add
With ActiveChart
.ChartType = xl3DColumn
.SetSourceData Source:=Sheets("Sheet1").Range("B3:H15")
.Location Where:=xlLocationAsObject, Name:="Monthly Sales"
.HasTitle = True
.ChartTitle.Characters.Text = Monthly Sales by Category
End With
hoja activa
La propiedad ActiveSheet devuelve un objeto Worksheet que representa el
sheetthat seleccionado actualmente es, en la parte superior de la hoja de
clculo. Slo una hoja de un libro puede ser la hoja activa. En el ejemplo de
cdigo siguiente se copia la hoja de clculo activa tres veces y coloca las
copias de Sheet1.
For numtimes = 1 To 3
' Put copies in front of Sheet1.
ActiveWorkbook.ActiveSheet.Copy _
Before:=ActiveWorkbook.Sheets("Sheet1")
Next
ActiveWindow
La propiedad ActiveWindow devuelve un objeto Window que representa la
ventana activa, que es la ventana en la parte superior. En el ejemplo de
cdigo siguiente se selecciona y se imprime una hoja de clculo y, a
continuacin, repite el proceso para una segunda hoja de clculo. La

propiedad ScreenUpdating se establece en False para eliminar un parpadeo


mientras se ejecuta la macro.
Application.ScreenUpdating = False
Sheets("Sales").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Expenses").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWorkbook
La propiedad ActiveWorkbook devuelve un objeto Workbook que
representa el libro en la ventana activa, que es la ventana en la parte
superior. Este ejemplo establece el modo de clculo manual, para que los
otros libros no calcular, a continuacin, recorre y vuelve a calcular cada hoja
de clculo del libro activo.
Dim wks As Worksheet
Application.Calculation = xlManual
For Each wks In ActiveWorkbook.Worksheets
wks.Calculate
Next
Set wks = Nothing
RangeSelection
La propiedad RangeSelection devuelve un objeto de Range que representa
las celdas seleccionadas en la hoja de clculo en la ventana especificada
aunque un objeto grfico est activo o seleccionado en la hoja de clculo.
Cuando se selecciona un rango de celdas, la propiedadRangeSelection y el
objeto de Selection representan el mismo rango de celdas. Cuando se
selecciona un grfico, la propiedadRangeSelection devuelve la seleccin
de celdas. El ejemplo de cdigo siguiente muestra los tres primeros
caracteres en una celda. Quiz se pregunte por qu se utiliza una propiedad
de Name dos veces en una fila. RangeSelection.Name devuelve la
direccin del rango, como, por ejemplo, Sheet1!$A$1:$B$15, y, a
continuacin, la propiedad Name de rango devuelve el nombre del rango de
s mismo.
Range("A1").Select
MsgBox Left(ActiveWindow.RangeSelection.Name.Name, 3)
Seleccin
La propiedad Selection devuelve el objeto seleccionado en la ventana
activa para un objeto Application. Por ejemplo, las celdas, la propiedad
devuelve un objeto Range; los grficos, devuelve un objeto Chart. Si se
utiliza la propiedad sin calificador de objeto, es equivalente a
utilizarApplication.Selection. En el ejemplo de cdigo siguiente se cuenta

el nmero de celdas de la seleccin y se muestra el resultado en un cuadro


de mensaje.
Dim cell As Object
Dim count As Integer
count = 0
For Each cell In Selection
count = count + 1
Next cell
MsgBox count & " item(s) selected"
ThisWorkbook
La propiedad ThisWorkbook devuelve un objeto Workbook que
representa el libro donde se ejecuta el cdigo de macro actual. Esta
propiedad permite que los complementos hacer referencia al libro que
contiene el cdigo. La propiedad ActiveWorkbook no funciona en este
caso porque el libro activo puede no ser el que contiene el cdigo del
complemento. En otras palabras, la propiedad ActiveWorkbookdevuelve el
libro de complemento; Devuelve el libro al que llama el complemento. Si
crea un complemento desde el cdigo de Visual Basic, se debe utilizar la
propiedad ThisWorkbook para calificar cualquier instruccin que debe
ejecutarse en el libro que se compile como complemento. Este ejemplo de
cdigo cierra el libro que contiene el cdigo de ejemplo. Los cambios del
libro, si hay alguno, no se guardan.
ThisWorkbook.Close SaveChanges:=False
mtodos
Esta seccin describe algunos de los mtodos que se pueden acceder desde el
objeto Application. Analiza los cuadros de dilogo y cuadros de entrada.
Cuadros de dilogo
El mtodo GetOpenFilename muestra el estndar de cuadro de
dilogo Abrir y se obtiene un nombre de archivo del usuario sin necesidad
de abrir todos los archivos. El mtodo GetOpenFilename le ofrece el
mayor control sobre el proceso de abrir un archivo desde su aplicacin,
porque todo lo que hace es devolver el nombre completo de ruta de acceso
y el archivo seleccionado por el usuario como una cadena. Qu hacer con
esa informacin es suya. Por ejemplo, puede pasar el resultado del
mtodo OpenText. En el ejemplo de cdigo siguiente se muestra el cuadro
de dilogo Abrir con el filtrado en el conjunto del cuadro No se ha
encontrado para Archivos de texto (*.txt) y, a continuacin, muestra un
cuadro de mensaje de la eleccin del usuario. Tenga en cuenta que el
archivo no est abierto.
Dim fileToOpen As String
fileToOpen = Application.GetOpenFilename("Text Files (*.txt),
*.txt")

If fileToOpen <> "" Then


MsgBox "Open " & fileToOpen
End If

A diferencia del mtodo GetOpenFilename, el mtodo FindFile muestra el


cuadro de dilogo Abrir y permite al usuario abrir un archivo. Si un archivo
nuevo se abre correctamente, el mtodo devuelve True. Si el usuario
cancela el cuadro de dilogo, este mtodo devuelve False. En el ejemplo de
cdigo siguiente se muestra un mensaje que indica al usuario para abrir un
archivo especfico y, a continuacin, muestra el cuadro de dilogo de Open.
Si el usuario no puede abrir el archivo, se muestra un mensaje.
Dim bSuccess As Boolean
Msgbox "Locate the MonthlySales.xls file."
bSuccess = Application.FindFile
If Not bSuccess Then
Msgbox "File not open."
End If
Puede abrir estos cuadros de dilogo de archivo, o cualquier otro dilogo
comn de archivo mediante el uso de la coleccin Dialogs que forma parte
de Excel. Una de las ventajas de utilizar la coleccin de Dialogs cuando se
utiliza el mtodo Show, se puede pasar argumentos para modificar el
comportamiento predeterminado del cuadro de dilogo integrado. Para
encontrar los argumentos a establecer para un cuadro de dilogo
determinado, busque la constante del cuadro de dilogo correspondiente en
el tema de Listas de argumentos de cuadros de dilogo integrados en la
referencia del programador de Excel.

Para ver la lista de miembros de la coleccin de


cuadros de dilogo
1. Abra un mdulo VBA.
2. Para mostrar el Explorador de objetos, en el men Ver , haga clic en
el Explorador de objetos. O bien, presione F2.
3. Escriba xlDialog en el cuadro de bsqueda.
4. Haga clic en el botn de bsqueda.
InputBox
El mtodo InputBox muestra un cuadro de dilogo que solicita al usuario un
valor. Este mtodo le permite realizar alguna validacin selectiva de la
entrada especificando el tipo de datos esperado por el usuario. sta es la
sintaxis del mtodo, donde Prompt es el mensaje mostrado en el cuadro de
dilogo, por lo que puede permitir que el usuario conoce el tipo de datos
que se espera, Title es el ttulo mostrado en la parte superior del cuadro de
dilogo, Default es el valor predeterminado que se muestra

inicialmente, Left y Top se utilizan para especificar la posicin del cuadro de


dilogo, HelpFile y HelpContextID especifican un archivo de ayuda y qu
tema para mostrarlo y Type es el tipo de devolucin de datos. Tenga en
cuenta que Left y Top son relativas a la esquina superior izquierda de la
pantalla y se expresan en puntos. Adems, si se
especifican HelpFile y HelpContextID, un botn de Ayuda se incluye en el
cuadro de dilogo. Type, el valor predeterminado es 2 (texto). Los tipos
permitidos incluyen una frmula, nmero, cadena, valor lgico, una
referencia de celda y el valor de error y una lista de valores y se muestran
en la tabla 1.

Tabla 1. Tipos de datos devueltos InputBox


ValorType
: {0}Una frmula. La frmula se devuelve como una cadena. Esto es el
nico argumento requerido.
{1}Un nmero. Tambin puede incluir aqu una frmula con valores de
modo que devuelve un valor.
{2}Texto (cadena).
4Un valor lgico (True o False).
8Una referencia de celda, como un objeto Range.
16Un valor de error como # N/A.
64Una lista de valores.
Nota:
Si Type es 8, debe utilizar la instruccin Set para asignar el resultado a un
objeto Range, tal como se muestra en el siguiente ejemplo de cdigo.
En el ejemplo de cdigo siguiente se pide al usuario el nmero de copias y
se imprime el nmero de la hoja de clculo activa. Tenga en cuenta que el
tipo especifica que el mtodo espera un nmero.
Dim TotalCopies As Long, NumCopies As Long
Dim sPrompt As String, sTitle As String
sPrompt = "How many copies do you want?"
sTitle = "Prints the active sheet"
TotalCopies = Application.InputBox(Prompt:=sPrompt, _
Title:=sTitle, Default:=1, Type:=1)
For NumCopies = 1 To TotalCopies
ActiveSheet.PrintOut
Next NumCopies

El artculo de Frank Rice (Developers Guide al objeto Application de Excel 2007)


contiene informacin adicional sobre el objeto Application. Incluye lo siguiente:

Ejecutar el mtodo. El mtodo Run ejecuta una macro o llama a una


funcin.

Eventos del objeto de aplicacin. El objeto de Application expone


varios eventos que puede utilizar para supervisar las acciones para toda la
aplicacin Excel.

Activa y desactiva las alertas. Permite eliminar o guardar una hoja de


clculo sin preguntar al usuario.

Enviar informacin al Bloc de notas mediante el uso de


SendKeys. Este ejemplo copia un rango de datos de Excel en el Bloc de notas y, a
continuacin, guarda el archivo de Bloc de notas.

Programacin de una Macro para ejecutarla en un tiempo


especificado y el intervalo. Este ejemplo se utiliza el mtodo OnTime del
objetoApplication para ejecutar un procedimiento en un momento determinado o
a intervalos de tiempo regulares.

You might also like