Looking for excel-vba Keywords? Try Ask4Keywords

excel-vbaEmpezando con excel-vba


Observaciones

Microsoft Excel incluye un completo lenguaje de programación de macros llamado VBA. Este lenguaje de programación le proporciona al menos tres recursos adicionales:

  1. Conducir automáticamente Excel desde el código utilizando macros. En su mayor parte, cualquier cosa que el usuario pueda hacer manipulando Excel desde la interfaz de usuario puede hacerlo escribiendo código en Excel VBA.
  2. Crear nuevas funciones de hojas de trabajo personalizadas.
  3. Interactúa con otras aplicaciones como Microsoft Word, PowerPoint, Internet Explorer, Bloc de notas, etc.

VBA significa Visual Basic para aplicaciones. Es una versión personalizada del venerable lenguaje de programación Visual Basic que ha impulsado las macros de Microsoft Excel desde mediados de los años noventa.

IMPORTANTE
Asegúrese de que los ejemplos o temas creados dentro de la etiqueta excel-vba sean específicos y relevantes para el uso de VBA con Microsoft Excel. Cualquier tema sugerido o ejemplos provistos que sean genéricos para el lenguaje de VBA deben ser rechazados para evitar la duplicación de esfuerzos.

  • ejemplos sobre el tema:

    Crear e interactuar con objetos de la hoja de trabajo.
    La clase WorksheetFunction y los métodos respectivos.
    Usar la enumeración xlDirection para navegar por un rango

  • ejemplos fuera de tema:

    Cómo crear un bucle 'para cada'
    Class Clase MsgBox y cómo mostrar un mensaje
    Usando WinAPI en VBA


Versiones

VB

Versión Fecha de lanzamiento
VB6 1998-10-01
VB7 2001-06-06
WIN32 1998-10-01
WIN64 2001-06-06
MAC 1998-10-01

Sobresalir

Versión Fecha de lanzamiento
dieciséis 2016-01-01
15 2013-01-01
14 2010-01-01
12 2007-01-01
11 2003-01-01
10 2001-01-01
9 1999-01-01
8 1997-01-01
7 1995-01-01
5 1993-01-01
2 1987-01-01

Agregar una nueva referencia de biblioteca de objetos

El procedimiento describe cómo agregar una referencia de biblioteca de objetos y, posteriormente, cómo declarar nuevas variables con referencia a los nuevos objetos de clase de biblioteca.

El siguiente ejemplo muestra cómo agregar la biblioteca de PowerPoint al proyecto VB existente. Como se puede ver, actualmente la biblioteca de objetos de PowerPoint no está disponible.

introduzca la descripción de la imagen aquí

Paso 1 : Seleccione Herramientas de menú -> Referencias ... introduzca la descripción de la imagen aquí

Paso 2 : Seleccione la referencia que desea agregar. En este ejemplo, nos desplazamos hacia abajo para encontrar " Microsoft PowerPoint 14.0 Object Library ", y luego presionamos " OK ". introduzca la descripción de la imagen aquí

Nota: PowerPoint 14.0 significa que la versión de Office 2010 está instalada en la PC.

Paso 3 : en el Editor VB, una vez que presiona Ctrl + Espacio juntos, obtiene la opción de autocompletar de PowerPoint. introduzca la descripción de la imagen aquí

Después de seleccionar PowerPoint y presionar . , aparece otro menú con todas las opciones de objetos relacionadas con la Biblioteca de objetos de PowerPoint. Este ejemplo muestra cómo seleccionar la Application objeto de PowerPoint. introduzca la descripción de la imagen aquí

Paso 4 : Ahora el usuario puede declarar más variables utilizando la biblioteca de objetos de PowerPoint.

Declare una variable que hace referencia al objeto de Presentation de la biblioteca de objetos de PowerPoint. introduzca la descripción de la imagen aquí

Declare otra variable que haga referencia al objeto Slide de la biblioteca de objetos de PowerPoint. introduzca la descripción de la imagen aquí

Ahora la sección de declaración de variables se ve como en la captura de pantalla a continuación, y el usuario puede comenzar a usar estas variables en su código. introduzca la descripción de la imagen aquí

Versión en código de este tutorial:

Option Explicit

Sub Export_toPPT()

Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide

' here write down everything you want to do with the PowerPoint Class and objects


End Sub
 

Declarando variables

Para declarar explícitamente las variables en VBA, use la declaración Dim , seguida del nombre y tipo de la variable. Si se utiliza una variable sin ser declarada, o si no se especifica ningún tipo, se le asignará el tipo Variant .

Use la declaración Option Explicit en la primera línea de un módulo para forzar que todas las variables se declaren antes de su uso (vea SIEMPRE use "Option Explicit" ).

Siempre se recomienda utilizar Option Explicit porque ayuda a prevenir errores tipográficos / ortográficos y garantiza que las variables / objetos sigan siendo su tipo deseado.

Option Explicit

Sub Example()
    Dim a As Integer
    a = 2
    Debug.Print a
    'Outputs: 2

    Dim b As Long
    b = a + 2
    Debug.Print b
    'Outputs: 4

    Dim c As String
    c = "Hello, world!"
    Debug.Print c
    'Outputs: Hello, world!
End Sub
 

Se pueden declarar múltiples variables en una sola línea usando comas como delimitadores, pero cada tipo debe declararse individualmente , o se establecerán de forma predeterminada al tipo Variant .

Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str)    'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng)    'Output: Long
 

Las variables también se pueden declarar utilizando los sufijos de caracteres del tipo de datos ($% &! # @), Sin embargo, su uso está cada vez más desaconsejado.

 Dim this$  'String
 Dim this%  'Integer
 Dim this&  'Long
 Dim this!  'Single
 Dim this#  'Double
 Dim this@  'Currency
 

Otras formas de declarar variables son:

  • Static como: Static CounterVariable as Integer

Cuando utiliza la instrucción Estática en lugar de una instrucción Dim, la variable declarada conservará su valor entre las llamadas.

  • Public como: Public CounterVariable as Integer

Las variables públicas se pueden utilizar en cualquier procedimiento en el proyecto. Si una variable pública se declara en un módulo estándar o un módulo de clase, también se puede utilizar en cualquier proyecto que haga referencia al proyecto donde se declara la variable pública.

  • Private como: Private CounterVariable as Integer

Las variables privadas solo pueden ser utilizadas por procedimientos en el mismo módulo.

Fuente y más información:

Variables de declaración de MSDN

Tipo de caracteres (Visual Basic)

Comenzando con el modelo de objetos de Excel

Este ejemplo pretende ser una introducción suave al Modelo de objetos de Excel para principiantes .


  1. Abra el Editor de Visual Basic (VBE)
  2. Haga clic en Ver -> Ventana Inmediata para abrir la ventana Inmediata (o ctrl + G ):

introduzca la descripción de la imagen aquí

  1. Debería ver la siguiente ventana inmediata en la parte inferior de VBE:

introduzca la descripción de la imagen aquí

Esta ventana le permite probar directamente algunos códigos VBA. Así que vamos a empezar, escriba en esta consola:

?Worksheets. 
 

VBE tiene intellisense y luego debería abrir una información sobre herramientas como en la siguiente figura:

introduzca la descripción de la imagen aquí

Seleccione .Contar en la lista o escriba directamente .Cout para obtener:

?Worksheets.Count
 
  1. Luego presione Enter. La expresión se evalúa y debe devolver 1. Esto indica el número de Hoja de trabajo actualmente presente en el libro de trabajo. El signo de interrogación ( ? ) Es un alias para Debug.Print.

Las hojas de trabajo son un objeto y el conteo es un método . Excel tiene varios Objetos ( Workbook Worksheet , Worksheet , Range , Chart ...) y cada uno contiene métodos y propiedades específicos. Puede encontrar la lista completa de Objeto en la referencia de Excel VBA . Hojas de trabajo Objeto se presenta aquí .

Esta referencia de Excel VBA debe convertirse en su principal fuente de información con respecto al Modelo de objetos de Excel.

  1. Ahora probemos otra expresión, escriba (sin el carácter ? ):
Worksheets.Add().Name = "StackOveflow"
 
  1. Presione Enter. Esto debería crear una nueva hoja de cálculo llamada StackOverflow. :

introduzca la descripción de la imagen aquí

Para comprender esta expresión, debe leer la función Agregar en la referencia de Excel mencionada anteriormente. Encontrarás lo siguiente:

Add:  Creates a new worksheet, chart, or macro sheet. 
The new worksheet becomes the active sheet. 
Return Value: An Object value that represents the new worksheet, chart,
 or macro sheet.
 

Entonces, las Worksheets.Add() crean una nueva hoja de trabajo y la devuelven. La hoja de trabajo ( sin s ) es en sí misma un Objeto que se puede encontrar en la documentación y Name es una de sus propiedades (consulte aquí ). Se define como:

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.
 

Entonces, al investigar las diferentes definiciones de objetos, podemos entender este código Worksheets.Add().Name = "StackOveflow" .

Add() crea y agrega una nueva hoja de trabajo y le devuelve una referencia , luego establecemos su propiedad Name en "StackOverflow"


Ahora seamos más formales, Excel contiene varios objetos. Estos objetos pueden estar compuestos de una o varias colecciones de objetos Excel de la misma clase. Es el caso de WorkSheets que es una colección de objetos de Worksheet de Worksheet . Cada objeto tiene algunas propiedades y métodos con los que el programador puede interactuar.

El modelo de objetos de Excel se refiere a la jerarquía de objetos de Excel

En la parte superior de todos los objetos se encuentra el objeto Application , que representa la propia instancia de Excel. La programación en VBA requiere una buena comprensión de esta jerarquía porque siempre necesitamos una referencia a un objeto para poder llamar a un método o para establecer / obtener una propiedad.

El modelo de objetos de Excel (muy simplificado) se puede representar como,

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range
 

A continuación se muestra una versión más detallada del objeto de la hoja de trabajo (como está en Excel 2007)

introduzca la descripción de la imagen aquí

El modelo completo de objetos de Excel se puede encontrar aquí .

Finalmente, algunos objetos pueden tener events (por ejemplo, Workbook.WindowActivate ) que también forman parte del Modelo de objetos de Excel.

Hola Mundo

  1. Abra el Editor de Visual Basic (vea Abrir el Editor de Visual Basic )
  2. Haga clic en Insertar -> Módulo para agregar un nuevo módulo:

introduzca la descripción de la imagen aquí

  1. Copie y pegue el siguiente código en el nuevo módulo:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

Para obtener :

introduzca la descripción de la imagen aquí

  1. Haga clic en la flecha verde "jugar" (o presione F5) en la barra de herramientas de Visual Basic para ejecutar el programa: introduzca la descripción de la imagen aquí

  2. Seleccione el nuevo sub creado "hola" y haga clic en Run : introduzca la descripción de la imagen aquí

  3. Hecho, deberías ver la siguiente ventana:

introduzca la descripción de la imagen aquí

Abriendo el Editor de Visual Basic (VBE)


Paso 1: abrir un libro de trabajo

introduzca la descripción de la imagen aquí


Paso 2 Opción A: presiona Alt + F11

Este es el atajo estándar para abrir el VBE.

Paso 2 Opción B: pestaña Desarrollador -> Ver código

Primero, la pestaña Programador debe agregarse a la cinta. Vaya a Archivo -> Opciones -> Personalizar cinta, luego marque la casilla para desarrollador.

introduzca la descripción de la imagen aquí

Luego, vaya a la pestaña del desarrollador y haga clic en "Ver código" o "Visual Basic"

introduzca la descripción de la imagen aquí

Paso 2 Opción C: pestaña Ver> Macros> Haga clic en el botón Editar para abrir una macro existente

Las tres de estas opciones abrirán el Editor de Visual Basic (VBE):

introduzca la descripción de la imagen aquí