Acceder

Trucos y tretas en Excel VBA para programadores. Usando el objeto Application.

El objeto Application en Excel VBA es el objeto principal que representa la aplicación de Excel. Es decir, es el objeto raíz que se usa para interactuar con la aplicación de Excel en su totalidad. Hay varios objetos que están asociados al objeto Application, los cuales son:

  1. Workbooks: este objeto representa la colección de todos los libros (o archivos) abiertos en Excel. Se utiliza para referirse a libros específicos, así como para abrir, cerrar y crear nuevos libros.
  2. Worksheets: este objeto representa la colección de todas las hojas de un libro específico. Se utiliza para referirse a hojas específicas, así como para agregar, eliminar y cambiar el nombre de las hojas.
  3. Range: este objeto representa una selección de celdas en una hoja específica. Se utiliza para referirse a celdas y rangos de celdas específicos, así como para realizar operaciones en los datos de celdas, como lectura, escritura y formato.
  4. Chart: este objeto representa un gráfico en una hoja de cálculo específica. Se utiliza para agregar, eliminar y personalizar gráficos.
  5. PivotTable: este objeto representa una tabla dinámica en una hoja de cálculo específica. Se utiliza para agregar, eliminar y personalizar tablas dinámicas.
  6. Application.Window: este objeto representa la ventana de Excel que se está utilizando actualmente. Se utiliza para personalizar la apariencia de la ventana de Excel, como su tamaño y posición.
  7. Application.WorksheetFunction: este objeto representa una colección de funciones incorporadas de Excel, como SUM, AVERAGE y MAX. Se utiliza para realizar cálculos complejos y estadísticos en los datos de una hoja de cálculo.
  8. Application.Dialogs: este objeto representa una colección de cuadros de diálogo de Excel, como el cuadro de diálogo "Guardar como". Se utiliza para abrir y personalizar cuadros de diálogo de Excel.

Workbooks


El objeto Application.Workbooks en Excel VBA se refiere a la colección de todos los libros (o archivos) abiertos en Excel. A continuación se presentan algunos de los usos más comunes del objeto Application.Workbooks:

Abrir un libro: se puede usar la propiedad Application.Workbooks.Open para abrir un libro específico en Excel. Por ejemplo:
Workbooks.Open "C:\miLibro.xlsx"
Cerrar un libro: se puede usar la propiedad Application.Workbooks.Close para cerrar un libro específico en Excel. Por ejemplo:
Workbooks("miLibro.xlsx").Close
Referirse a un libro específico: se puede usar la propiedad Application.Workbooks(index) o Application.Workbooks(nombre) para referirse a un libro específico en Excel. Por ejemplo:
Workbooks(1).Activate Workbooks("miLibro.xlsx").Save
Crear un libro nuevo: se puede usar la propiedad Application.Workbooks.Add para crear un nuevo libro en Excel. Por ejemplo:
Workbooks.Add 
Guardar un libro: se puede usar la propiedad Application.Workbooks(nombre).Save para guardar un libro específico en Excel. Por ejemplo:
Workbooks("miLibro.xlsx").Save
Iterar a través de todos los libros abiertos: se puede usar un bucle For Each para iterar a través de todos los libros abiertos en Excel. Por ejemplo:

Dim wb As Workbook 
For Each wb In Workbooks 
MsgBox wb.Name 
Next wb 
En resumen, el objeto Application.Workbooks se utiliza para interactuar con los libros abiertos en Excel, permitiendo su apertura, cierre, guardado y creación, y referenciándolos para realizar operaciones específicas en ellos.

Worksheets


El objeto Application.Worksheets en Excel VBA se refiere a la colección de todas las hojas de cálculo en un libro específico. A continuación se presentan algunos de los usos más comunes del objeto Application.Worksheets:

Referirse a una hoja de cálculo específica: se puede usar la propiedad Application.Worksheets(nombre) o Application.Worksheets(index) para referirse a una hoja de cálculo específica en un libro. Por ejemplo:
Worksheets("Hoja1").Range("A1").Value = 10
Worksheets(2).Range("B1").Value = 20
Agregar una hoja de cálculo: se puede usar la propiedad Application.Worksheets.Add para agregar una nueva hoja de cálculo al libro. Por ejemplo:
Worksheets.Add
Eliminar una hoja de cálculo: se puede usar la propiedad Application.Worksheets(nombre o index).Delete para eliminar una hoja de cálculo específica del libro. Por ejemplo:
Worksheets("Hoja2").Delete
Renombrar una hoja de cálculo: se puede usar la propiedad Application.Worksheets(nombre o index).Name para cambiar el nombre de una hoja de cálculo específica en el libro. Por ejemplo:
Worksheets(1).Name = "MiHoja"
Iterar a través de todas las hojas de cálculo en un libro: se puede usar un bucle For Each para iterar a través de todas las hojas de cálculo en un libro específico. Por ejemplo:
Dim ws As Worksheet
For Each ws In Worksheets
    MsgBox ws.Name
Next ws
Referirse a la hoja de cálculo activa: se puede usar la propiedad Application.ActiveSheet para referirse a la hoja de cálculo activa en el libro. Por ejemplo:
ActiveSheet.Range("A1").Value = 30

En resumen, el objeto Application.Worksheets se utiliza para interactuar con las hojas de cálculo dentro de un libro de Excel, permitiendo su referencia, creación, eliminación, renombramiento e iteración a través de ellas.

Range


El objeto Application.Range se utiliza para manipular los rangos de celdas en una hoja de cálculo de Excel utilizando VBA. A continuación se presentan algunos de los usos más comunes de este objeto:

Referir a un rango de celdas específico en una hoja de cálculo utilizando la propiedad Range de un objeto Worksheet. Por ejemplo, Application.Worksheets("Sheet1").Range("A1:B10").
Asignar un valor a un rango de celdas utilizando la propiedad Value. Por ejemplo,
 
Application.Worksheets("Sheet1").Range("A1:B10").Value = 10.

Asignar un formato a un rango de celdas utilizando las propiedades Font, Borders, Interior, NumberFormat, HorizontalAlignment, VerticalAlignment, entre otras. Por ejemplo,
 Application.Worksheets("Sheet1").Range("A1:B10").Font.Bold = True.
Copiar, pegar y cortar un rango de celdas utilizando los métodos Copy, PasteSpecial, Cut y ClearContents. Por ejemplo, 
Application.Worksheets("Sheet1").Range("A1:B10").Copy.
Ordenar un rango de celdas utilizando el método Sort. Por ejemplo,
 Application.Worksheets("Sheet1").Range("A1:B10").Sort Key1:=Application.Worksheets("Sheet1").Range("A1"), Order1:=xlAscending.
Realizar cálculos en un rango de celdas utilizando las funciones de Excel, como SUM, AVERAGE, MAX, MIN, entre otras. Por ejemplo,
 Application.Worksheets("Sheet1").Range("A1:B10").Value = WorksheetFunction.Sum(Application.Worksheets("Sheet1").Range("A1:A10")).
Acceder a celdas individuales dentro de un rango utilizando la propiedad Cells. Por ejemplo,
 Application.Worksheets("Sheet1").Range("A1:B10").Cells(1, 1).Value.
Acceder a filas o columnas individuales dentro de un rango utilizando las propiedades Rows y Columns. Por ejemplo, 
Application.Worksheets("Sheet1").Range("A1:B10").Columns(1).Value = 10.

Chart


El objeto Application.Chart se utiliza para trabajar con gráficos en Excel VBA. Algunos de sus usos comunes son:

Crear un nuevo gráfico en una hoja de cálculo
Dim chartObj As Chart
Set chartObj = Worksheets("Sheet1").ChartObjects.Add(0, 0, 400, 300).Chart

Actualizar los datos de un gráfico existente
Dim chartObj As Chart
Set chartObj = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
chartObj.SetSourceData Source:=Worksheets("Sheet1").Range("A1:B10")

Cambiar el tipo de gráfico
Dim chartObj As Chart
Set chartObj = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
chartObj.ChartType = xlColumnClustered

Personalizar la apariencia del gráfico

Dim chartObj As Chart
Set chartObj = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
chartObj.ChartArea.Format.Fill.ForeColor.RGB = RGB(255, 255, 255)
chartObj.ChartArea.Format.Fill.Transparency = 0.5

Copiar un gráfico a otro lugar en la hoja de cálculo o en otra hoja de cálculo
Dim chartObj As Chart
Set chartObj = Worksheets("Sheet1").ChartObjects("Chart 1").Chart
chartObj.ChartArea.Copy
Worksheets("Sheet2").Range("A1").PasteSpecial

Estos son solo algunos ejemplos de los usos del objeto Application.Chart. En general, se utiliza para automatizar la creación, actualización y personalización de gráficos en Excel VBA.

PivotTable


El objeto Application.PivotTable se utiliza para trabajar con tablas dinámicas en Excel VBA. Algunos de sus usos comunes son:

Crear una nueva tabla dinámica a partir de un rango de datos
Dim pt As PivotTable
Set pt = ActiveWorkbook.PivotTableWizard(SourceType:=xlDatabase, SourceData:=Range("A1:B10"))
Actualizar los datos de una tabla dinámica existente
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("PivotTable1")
pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Range("A1:C10"))
pt.RefreshTable
Cambiar la configuración de campos de una tabla dinámica
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("PivotTable1")
pt.PivotFields("Category").Orientation = xlRowField
pt.PivotFields("Sales").Orientation = xlDataField

Personalizar el diseño y estilo de una tabla dinámica

Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("PivotTable1")
pt.TableStyle2 = "PivotStyleLight16"
pt.DisplayErrorString = True
Copiar una tabla dinámica a otro lugar en la hoja de cálculo o en otra hoja de cálculo
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("PivotTable1")
pt.TableRange2.Copy
Worksheets("Sheet2").Range("A1").PasteSpecial

Estos son solo algunos ejemplos de los usos del objeto Application.PivotTable. En general, se utiliza para automatizar la creación, actualización y personalización de tablas dinámicas en Excel VBA.

Window


El objeto Application.Window se utiliza para trabajar con las ventanas en Excel VBA. Algunos de sus usos comunes son:

Cambiar el tamaño de la ventana activa

Application.ActiveWindow.Width = 800
Application.ActiveWindow.Height = 600

Cambiar la posición de la ventana activa

Application.ActiveWindow.Left = 100
Application.ActiveWindow.Top = 100

Ocultar o mostrar la barra de herramientas de Excel

Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False

Abrir una nueva ventana para mostrar la misma hoja de cálculo

Application.ActiveWorkbook.NewWindow

Desplazarse a través de varias ventanas de libro de trabajo abierto

For Each w In Application.Windows
    Debug.Print w.Caption
Next w

Estos son solo algunos ejemplos de los usos del objeto Application.Window. En general, se utiliza para automatizar la manipulación de las ventanas en Excel VBA, incluyendo la personalización de tamaño, posición y visibilidad, así como la apertura de nuevas ventanas y la navegación entre ellas.

WorksheetFunction

 
El objeto Application.WorksheetFunction se utiliza para llamar a las funciones de hoja de cálculo de Excel desde el código VBA. Algunos de sus usos comunes son:

Calcular la suma de un rango de celdas

Dim mySum As Double
mySum = Application.WorksheetFunction.Sum(Range("A1:A10")) 

 Encontrar el valor máximo en un rango de celdas
 
Dim myMax As Double
myMax = Application.WorksheetFunction.Max(Range("A1:A10"))

 Calcular la mediana de un rango de celdas
 
Dim myMedian As Double
myMedian = Application.WorksheetFunction.Median(Range("A1:A10"))

 Convertir grados a radianes
 
Dim myRadians As Double
myRadians = Application.WorksheetFunction.Radians(45)

 Calcular la raíz cuadrada de un número
 
Dim mySqrt As Double
mySqrt = Application.WorksheetFunction.Sqr(25)

 Estos son solo algunos ejemplos de los usos del objeto Application.WorksheetFunction. En general, se utiliza para acceder a las funciones de hoja de cálculo de Excel desde VBA y realizar cálculos y manipulaciones de datos en el código. 

Dialogs


 
El objeto Application.Dialogs se utiliza para mostrar cuadros de diálogo predeterminados en Excel a través del código VBA. Algunos de los usos comunes del objeto Application.Dialogs son:

Mostrar el cuadro de diálogo "Guardar como"
 
Application.Dialogs(xlDialogSaveAs).Show

 Mostrar el cuadro de diálogo "Abrir"
 
Application.Dialogs(xlDialogOpen).Show

 Mostrar el cuadro de diálogo "Imprimir"
 
Application.Dialogs(xlDialogPrint).Show

 Mostrar el cuadro de diálogo "Configuración de página"
 
Application.Dialogs(xlDialogPageSetup).Show

 Mostrar el cuadro de diálogo "Propiedades del libro"
 
Application.Dialogs(xlDialogWorkbookProperties).Show

 Mostrar el cuadro de diálogo "Buscar"
 
Application.Dialogs(xlDialogFormulaFind).Show

 Estos son solo algunos ejemplos de los usos del objeto Application.Dialogs. En general, se utiliza para mostrar cuadros de diálogo predeterminados de Excel y obtener información o realizar acciones específicas a través del código VBA. 



2
¿Te ha gustado el artículo?

Si quieres saber más y estar al día de mis reflexiones, suscríbete a mi blog y sé el primero en recibir las nuevas publicaciones en tu correo electrónico.

  1. en respuesta a Austral92
    -
    Top 100
    #2
    28/02/23 15:13
     
    En Excel VBA, los objetos Worksheets y Sheets son similares pero no son exactamente los mismos.

    Ambos objetos se utilizan para representar las hojas de cálculo en un libro de Excel, pero Sheets también puede representar otros tipos de hojas, como hojas de gráficos, mientras que Worksheets representa específicamente hojas de cálculo.

    Por lo tanto, la principal diferencia entre ambos objetos es que Worksheets solo incluye hojas de cálculo, mientras que Sheets incluye cualquier tipo de hoja en el libro.

    En cuanto a los objetos Range y Cells, también son similares pero no exactamente los mismos.

    Ambos objetos se utilizan para trabajar con celdas o rangos de celdas en una hoja de cálculo de Excel, pero Cells se refiere a una única celda y Range se refiere a un rango de celdas.

    Por lo tanto, si deseas trabajar con una única celda, debe usar Cells, mientras que si desea trabajar con un rango de celdas, debe usar Range. Por ejemplo, para seleccionar la celda A1 en una hoja de cálculo, usaríamos Cells(1,1), mientras que para seleccionar el rango A1:B10, usaríamos Range("A1:B10")
  2. #1
    28/02/23 12:19
    Los objetos Worksheets / Sheets  son similares o son exactamente el mismo?? y en el caso de Range / Cells?

    Gracias por el articulo, esta muy bien explicado y es  muy util para iniciarse con Excel VBA