Primeros pasos con excel-vba
Abriendo el Editor de Visual Basic (VBE)
Paso 1: Abra un libro de trabajo
Paso 2 Opción A: Presione Alt + F11
Este es el acceso directo estándar para abrir el VBE.
Paso 2 Opción B: Pestaña Desarrollador –> Ver código
Primero, la pestaña Desarrollador debe agregarse a la cinta. Vaya a Archivo -> Opciones -> Personalizar cinta, luego marque la casilla para desarrollador.
Luego, vaya a la pestaña de 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
Estas tres opciones abrirán el Editor de Visual Basic (VBE):
Declaración de variables
Para declarar explícitamente las variables en VBA, utilice la instrucción Dim
, seguida del nombre y el tipo de la variable. Si se utiliza una variable sin declarar, o si no se especifica ningún tipo, se le asignará el tipo Variant
.
Use la instrucción Option Explicit
en la primera línea de un módulo para forzar que todas las variables se declaren antes de su uso (consulte https://www.wikiod.com/es/excel-vba/practicas-recomendadas-de-vba#Utilice SIEMPRE “Opción explícita” use-option-explicit#t=201607231503377559602 ).
Se recomienda encarecidamente utilizar siempre Option Explicit
porque ayuda a evitar errores tipográficos/ortográficos y garantiza que las variables/objetos se mantendrán en el tipo previsto.
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 en el tipo Variante
.
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 sufijos de carácter de tipo de datos ($ % & ! # @), sin embargo, se desaconseja cada vez más su uso.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim [email protected] 'Currency
Otras formas de declarar variables son:
Static
como:Static CounterVariable as Integer
Cuando usa la instrucción Static en lugar de una instrucción Dim, la variable declarada conservará su valor entre llamadas.
Public
como:Public CounterVariable as Integer
Las variables públicas se pueden utilizar en cualquier procedimiento del proyecto. Si una variable pública se declara en un módulo estándar o un módulo de clase, también se puede usar 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
Caracteres de tipo (Visual Basic)
Adición de una nueva referencia de biblioteca de objetos
El procedimiento describe cómo agregar una referencia de biblioteca de objetos y luego cómo declarar nuevas variables con referencia a los nuevos objetos de clase de biblioteca.
El siguiente ejemplo muestra cómo agregar la biblioteca PowerPoint al Proyecto VB existente. Como puede verse, actualmente la biblioteca de objetos de PowerPoint no está disponible.
Paso 1: Seleccione Menú Herramientas –> 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 de VB, una vez que presionas Ctrl+Espacio juntos, obtienes 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 el objeto Aplicación
de PowerPoint.
Paso 4: Ahora el usuario puede declarar más variables utilizando la biblioteca de objetos de PowerPoint.
Declare una variable que haga referencia al objeto “Presentación” 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 de 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 (consulte https://www.wikiod.com/es/excel-vba/primeros-pasos-con-excel-vba#Abrir el Editor de Visual Basic (VBE))
- 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 “reproducir” (o presione F5) en la barra de herramientas de Visual Basic para ejecutar el programa:
-
Seleccione el nuevo sub “hola” creado y haga clic en
Ejecutar
: -
Listo, debería ver la siguiente ventana:
Primeros pasos 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 algún código VBA. Entonces, comencemos, escriba en esta consola:
?Worksheets.
VBE tiene intellisense y luego debería abrir una información sobre herramientas como en la siguiente figura:
Seleccione .Count en la lista o escriba directamente .Cout
para obtener:
?Worksheets.Count
- Luego presione Entrar. La expresión se evalúa y debería devolver 1. Esto indica el número de Hoja de trabajo presente actualmente en el libro de trabajo. El signo de interrogación (
?
) es un alias para Debug.Print.
Worksheets es un Objeto y Count es un Método. Excel tiene varios objetos (Libro de trabajo
, Hoja de trabajo
, Rango
, Gráfico
..) y cada uno de ellos contiene métodos y propiedades específicos. Puede encontrar la lista completa de objetos en la referencia de Excel VBA. El objeto Hojas de trabajo se presenta aquí .
Esta referencia de Excel VBA debería convertirse en su principal fuente de información sobre el modelo de objetos de Excel.
-
Ahora intentemos con otra expresión, escriba (sin el carácter
?
):Worksheets.Add().Name = “StackOveflow”
-
Presione Entrar. Esto debería crear una nueva hoja de trabajo 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 Worksheets.Add()
crea una nueva hoja de trabajo y la devuelve. La hoja de trabajo (sin s) es en sí misma un Objeto que se puede encontrar en la documentación y Nombre
es una de sus propiedades (ver 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 Nombre propiedad en “StackOverflow”
Ahora seamos más formales, Excel contiene varios Objetos. Estos Objetos pueden estar compuestos por una o varias colecciones de objetos de Excel de la misma clase. Es el caso de WorkSheets
, que es una colección de objetos 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 “Aplicación”, que representa la instancia de Excel en sí. 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 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 (tal como está en Excel 2007),
El modelo de objetos de Excel completo se puede encontrar aquí.
Finalmente, algunos objetos pueden tener eventos
(por ejemplo, Workbook.WindowActivate
) que también forman parte del modelo de objetos de Excel.