excel-vba Tutorial
Empezando con excel-vba
Buscar..
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:
- 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.
- Crear nuevas funciones de hojas de trabajo personalizadas.
- 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 claseWorksheetFunction
y los métodos respectivos.
✓ Usar la enumeraciónxlDirection
para navegar por un rango
ejemplos fuera de tema:
✗ Cómo crear un bucle 'para cada'
Class ClaseMsgBox
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 |
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)
Abriendo el Editor de Visual Basic (VBE)
Paso 1: abrir un libro de trabajo
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.
Luego, vaya a la pestaña del desarrollador y haga clic en "Ver código" o "Visual Basic"
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):
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.
Paso 1 : Seleccione Herramientas de menú -> Referencias ...
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 ".
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.
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.
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.
Declare otra variable que haga referencia al objeto Slide
de la biblioteca de objetos de PowerPoint.
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.
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
Hola Mundo
- Abra el Editor de Visual Basic (vea Abrir el Editor de Visual Basic )
- Haga clic en Insertar -> Módulo para agregar un nuevo módulo:
- Copie y pegue el siguiente código en el nuevo módulo:
Sub hello()
MsgBox "Hello World !"
End Sub
Para obtener :
Haga clic en la flecha verde "jugar" (o presione F5) en la barra de herramientas de Visual Basic para ejecutar el programa:
Hecho, deberías ver la siguiente ventana:
Comenzando con el modelo de objetos de Excel
Este ejemplo pretende ser una introducción suave al Modelo de objetos de Excel para principiantes .
- Abra el Editor de Visual Basic (VBE)
- Haga clic en Ver -> Ventana Inmediata para abrir la ventana Inmediata (o ctrl + G ):
- Debería ver la siguiente ventana inmediata en la parte inferior de VBE:
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:
Seleccione .Contar en la lista o escriba directamente .Cout
para obtener:
?Worksheets.Count
- 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.
- Ahora probemos otra expresión, escriba (sin el carácter
?
):
Worksheets.Add().Name = "StackOveflow"
- Presione Enter. Esto debería crear una nueva hoja de cálculo llamada
StackOverflow.
:
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)
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.