Introducción a VBA en Office
¿Tiene que realizar una limpieza repetitiva de 50 tablas en Word? ¿Quiere que, al abrir un documento específico, se le pida información al usuario? ¿Tiene dificultades para determinar cómo transferir sus contactos de Microsoft Outlook a una hoja de cálculo de Microsoft Excel de manera eficiente?
Puede realizar estas tareas y realizar mucho más mediante Visual Basic para Aplicaciones (VBA) para Office, un lenguaje de programación sencillo pero eficaz que puede usar para ampliar las aplicaciones de Office.
Este artículo está destinado a usuarios experimentados de Office que desean obtener información sobre VBA y que quieren saber cómo les puede ayudar la programación a personalizar Office.
El conjunto de aplicaciones de Office tiene un conjunto muy completo de características. Hay muchas formas diferentes de crear, manipular y dar formato a documentos, correos electrónicos, bases de datos, formularios, hojas de cálculo y presentaciones. La mayor potencia de la programación de VBA de Office es que casi todas las operaciones que puede realizar con un ratón, teclado o cuadro de diálogo también pueden hacerse mediante VBA. Además, si se puede realizar una vez con VBA, puede hacerse cien veces con la misma facilidad. (De hecho, la automatización de tareas repetitivas es uno de los usos más comunes de VBA de Office).
Más allá de la potencia de scripting de VBA para acelerar las tareas de cada día, puede usar VBA para agregar nuevas funciones a las aplicaciones de Office o contactar e interactuar con el usuario de sus documentos de forma acorde a las necesidades de su empresa. Por ejemplo, podría escribir un código VBA que muestre un mensaje que recuerde a los usuarios guardar un documento en una unidad de la red en concreto la primera vez que intenten guardarlo.
Este artículo explora algunas de las razones principales para aprovechar las ventajas de la programación de VBA. Explora el idioma VBA y las herramientas de fábrica que puede usar para trabajar con las soluciones. Por último, incluye algunas sugerencias y formas para evitar algunos problemas o fallos comunes de programación.
Nota:
¿Le interesa el desarrollo de soluciones que amplían la experiencia de Office en varias plataformas? Vea el nuevo modelo de complementos de Office. Los complementos de Office tienen una huella pequeña en comparación con los complementos y soluciones de VSTO, y se pueden construir utilizando casi cualquier tecnología de programación web, como HTML5, JavaScript, CSS3 y XML.
Cuándo y por qué usar VBA
Existen varias razones principales para usar la programación de VBA en Office.
Automatización y repetición
VBA es eficaz cuando se trata de soluciones repetitivas para problemas de formato y corrección. Por ejemplo, ¿alguna vez ha cambiado el estilo del párrafo en la parte superior de cada página en Word? ¿Alguna vez ha tenido que dar formato a varias tablas pegadas de Excel en un documento de Word o un correo electrónico de Outlook? ¿Alguna vez ha tenido que realizar el mismo cambio en varios contactos de Outlook?
Si tiene que realizar un cambio y repetirlo más de diez o veinte veces, sería conveniente automatizarlo con VBA. Si es un cambio que debe realizar cientos de veces, desde luego es algo a tener en cuenta. Casi cualquier cambio de formato o edición que pueda realizar a mano, puede hacerse en VBA.
Mayor interacción con el usuario
Hay ocasiones en las que desea animar o incitar a los usuarios a interactuar con el documento o la aplicación de Office de una forma determinada que no forma parte de la aplicación estándar. Por ejemplo, puede que quiera solicitar a los usuarios que realicen alguna acción particular al abrir, guardar o imprimir un documento.
Interacción entre las aplicaciones de Office
¿Necesita copiar todos los contactos de Outlook en Word y después aplicar el formato de alguna manera específica? O bien, ¿necesita mover datos de Excel a un conjunto de diapositivas de PowerPoint? A veces, la opción de copiar y pegar no vale para lo que quiere hacer o simplemente es demasiado lenta. Use la programación de VBA para interactuar con los detalles de dos o más aplicaciones de Office al mismo tiempo y después modificar el contenido de una aplicación en función del contenido de otra.
Otra forma de hacer las cosas
La programación de VBA es una solución eficaz, pero no siempre es el método óptimo. A veces tiene sentido usar otras formas para alcanzar sus objetivos.
La pregunta fundamental es si existe un método más sencillo. Antes de empezar un proyecto de VBA, considere las funcionalidades estándares y de las herramientas integradas. Por ejemplo, si tiene una tarea de edición o diseño que lleve mucho tiempo, considere la posibilidad de usar teclas de aceleración o estilos para resolver el problema. ¿Puede realizar la tarea una vez y, después, usar CTRL+Y (rehacer) para repetirla? ¿Puede crear un nuevo documento con el formato o la plantilla correctos y después copiar el contenido en ese documento nuevo?
Las aplicaciones de Office son eficaces; puede que la solución que necesita ya esté allí. Tómese un tiempo para aprender más sobre Office antes de empezar con la programación.
Antes de empezar un proyecto de VBA, asegúrese de que tiene el tiempo para trabajar con VBA. La programación requiere concentración y puede ser impredecible. Especialmente como principiante, nunca pase a la programación a menos que tenga el tiempo para trabajar en ello cuidadosamente. Intentar escribir un script con rapidez para resolver un problema cuando una fecha límite se acerca puede generar una situación verdaderamente estresante. Si tiene prisa, es conveniente usar métodos convencionales, aunque sean monótonos y repetitivos.
Iniciación a la programación de VBA
Usar código para que las aplicaciones realicen acciones
Puede que piense que escribir código es algo misterioso o difícil, pero los principios básicos usan razonamientos cotidianos y son bastante accesibles. Las aplicaciones de Microsoft Office se crean de forma que exponen elementos, denominados objetos, que pueden recibir instrucciones, de forma muy similar a los botones de un teléfono, que sirven para interactuar con el teléfono. Al presionar un botón, el teléfono reconoce la instrucción e incluye el número correspondiente en la secuencia que marque. En programación, se interactúa con la aplicación al enviar instrucciones a diferentes objetos de la aplicación. Estos objetos se pueden expandir, pero tienen sus límites. Solo pueden realizar las acciones para las que se diseñaron y solo realizarán las acciones para las que reciban instrucciones.
Por ejemplo, piense en el usuario que abre un documento en Word, realiza algunos cambios, guarda el documento y, a continuación, lo cierra. En el mundo de la programación VBA, Word expone un objeto Document. Al usar el código VBA, puede ordenar al objeto Document que realice acciones como Abrir, Guardar o Cerrar.
En la siguiente sección se explica cómo se organizan y describen los objetos.
El modelo de objetos
Los desarrolladores organizan los objetos de programación en una jerarquía, denominada el modelo de objetos de la aplicación. Word, por ejemplo, tiene un objeto Application de nivel superior que contiene un objeto Document. El objeto Document contiene objetos de párrafo, etc. Los modelos de objetos reflejan más o menos lo que se ve en la interfaz de usuario. Son un mapa conceptual de la aplicación y sus funciones.
La definición de un objeto se denomina clase y es posible que vea estos dos términos usados de forma intercambiable. Técnicamente, una clase es la descripción o plantilla que se usa para crear (o generar una instancia) de un objeto.
Cuando un objeto existe, puede manipularlo al configurar sus propiedades y realizar llamadas a sus métodos. Si piensa en un objeto como un nombre, las propiedades son los adjetivos que describen el nombre, mientras que los métodos son los verbos que animan al nombre. Al cambiar una propiedad, se cambia parte de la calidad de la apariencia o el comportamiento del objeto. A realizar una llamada a uno de los métodos de objeto, el objeto realiza alguna acción.
El código VBA de este artículo se ejecuta en una aplicación de Office abierta donde muchos de los objetos que manipula el código están ya en funcionamiento. Por ejemplo, la propia aplicación, la hoja de cálculo de Excel, el documento de Word, la presentación en PowerPoint, los objetos Explorador y Carpeta en Outlook. Una vez que conoce el diseño básico del modelo de objetos y algunas propiedades clave de la aplicación que proporciona acceso a su estado actual, puede empezar a ampliar y manipular esa aplicación de Office con VBA en Office.
Métodos
En Word, por ejemplo, puede cambiar las propiedades e invocar los métodos del documento de Word actual si usa la propiedad ActiveDocument del objeto Application. La propiedad ActiveDocument devuelve una referencia al objeto Document que esté activo actualmente en la aplicación de Word. “Devuelve una referencia” quiere decir “le da acceso a”.
El código siguiente hace exactamente lo que dice (es decir, guarda el documento activo en la aplicación).
Application.ActiveDocument.Save
Lea el código de izquierda a derecha, "En esta aplicación, con el documento al que hace referencia ActiveDocument, invoque el método Save ". Tenga en cuenta que Save es la forma más sencilla de método; no requiere instrucciones detalladas de usted. Se instruye a un objeto Document que use Save para guardar los cambios y no necesita recibir información.
Si un método necesita más información, los detalles se denominan parámetros. El código siguiente ejecuta el método SaveAs, que necesita un nombre nuevo para el archivo.
Application.ActiveDocument.SaveAs ("New Document Name.docx")
Los valores que aparecen entre paréntesis después del nombre de un método son los parámetros. Aquí, el nuevo nombre del archivo es un parámetro para el método SaveAs.
Propiedades
Utilice la misma sintaxis para definir una propiedad que la que utiliza para leer una propiedad. El siguiente código ejecuta un método para seleccionar la celda A1 en Excel y, a continuación, definir una propiedad para colocar contenido en esa celda.
Application.ActiveSheet.Range("A1").Select
Application.Selection.Value = "Hello World"
El primer reto en la programación VBA es familiarizarse con el modelo de objetos de cada aplicación de Office y leer el objeto, método y sintaxis de propiedad. Los modelos de objetos son similares en todas las aplicaciones de Office, pero cada uno es específico para el tipo de documentos y objetos que manipula.
En la primera línea del fragmento de código, verá el objeto Application (esta vez, Excel) y, después, verá ActiveSheet, que proporciona acceso a la hoja de cálculo activa. Después de eso es un término no tan familiar, Rango, lo que significa "definir un rango de celdas de esta manera". El código indica a Range que se cree solo con A1 como conjunto de celdas definido. Es decir, la primera línea de código define un objeto (Range) y ejecuta un método en el rango definido para seleccionarlo. El resultado se almacena automáticamente en otra propiedad de Application denominada Selection.
La segunda línea de código establece la propiedad Value de Selection en el texto “Hola a todos” y ese valor aparece en la celda A1.
El código VBA más sencillo que escribe podría obtener acceso simplemente a objetos en la aplicación de Office con la que está trabajando y definir propiedades. Por ejemplo, podría obtener acceso a las filas de una tabla en Word y cambiar su formato en el script VBA.
Parece simple, pero puede ser increíblemente útil; una vez que pueda escribir el código, podrá emplear todo el potencial de programación para realizar los mismos cambios en varias tablas o documentos, o realizarlos atendiendo a alguna lógica o condición. Para un equipo, no existe diferencia alguna entre hacer 1000 cambios o hacer 10, así que se economiza con problemas y documentos más grandes, y es aquí donde puede destacar VBA realmente y ahorrar tiempo.
Macros y el Editor de Visual Basic
Ahora que tiene información sobre cómo las aplicaciones de Office exponen sus modelos de objetos, probablemente estará deseando intentar invocar métodos de objetos, establecer propiedades de objetos y responder a eventos de objetos. Para ello, debe escribir su código en un lugar y en una forma que Office pueda entender, normalmente, con el Editor de Visual Basic. Aunque está instalado de forma predeterminada, muchos usuarios no saben que está disponible hasta que se habilita en la barra de herramientas.
Todas las aplicaciones de Office usan la cinta de opciones. Una de las pestañas de la cinta de opciones es la pestaña Desarrollador, donde puede obtener acceso al Editor de Visual Basic y otras herramientas de desarrollo. Como en Office no se muestra la pestaña Desarrollador de forma predeterminada, tiene que seguir este procedimiento para habilitarla:
Para habilitar la pestaña Desarrollador
En la pestaña Archivo, seleccione Opciones para abrir el cuadro de diálogo Opciones.
Elija Personalizar cinta de opciones en la parte izquierda del cuadro de diálogo.
En Comandos disponibles en:, en el lado izquierdo del cuadro de diálogo, seleccione Comandos más utilizados.
En Personalizar cinta de opciones en el lado derecho del cuadro de diálogo, seleccione Fichas principales en el cuadro de lista desplegable y, a continuación, active la casilla Programador.
Elija Aceptar.
Nota:
En Office 2007, para que se muestre la ficha Programador haga clic en el botón de Office, en Opciones y, a continuación, active la casilla Mostrar ficha Programador en la Cinta en la categoría Más frecuentes del cuadro de diálogo Opciones.
Después de habilitar la ficha Programador, es fácil encontrar los botones de Visual Basic y Macros.
Figura 1. Botones de la pestaña Desarrollador
Problemas de seguridad
Para proteger a los usuarios de Office contra virus y código de macros peligrosas, no puede guardar el código de macro en un documento de Office estándar que utiliza una extensión de archivo estándar. En su lugar, debe guardar el código en un archivo con una extensión especial. Por ejemplo, no se pueden guardar las macros en un documento estándar de Word con la extensión .docx; en su lugar, debe utilizar un documento habilitado para macros de Word especial con una extensión .docm.
Cuando abre un archivo .docm, la seguridad de Office todavía podría impedir que se ejecuten las macros en el documento, con o sin aviso previo. Examine la configuración y las opciones del Centro de confianza en todas las aplicaciones de Office. La configuración predeterminada deshabilita la ejecución de macros, pero le advierte de que se han deshabilitado las macros y le permite volver a activarlas para ese documento.
Puede designar carpetas específicas, donde las macros se pueden ejecutar al crear Ubicaciones de confianza, Documentos confiables o Editores de confianza. La opción más portátil es Editores de confianza, que funciona con los documentos firmados digitalmente que distribuya. Para obtener más información sobre la configuración de seguridad de una aplicación de Office específica, abra el cuadro de diálogo Opciones, haga clic en Centro de confianza y, después, seleccione Configuración del Centro de confianza.
Nota:
Algunas aplicaciones de Office, como Outlook, guardan las macros de forma predeterminada en una plantilla maestra en el equipo local. Aunque esa estrategia reduce los problemas de seguridad locales en su propio equipo al ejecutar sus propias macros, necesitará una estrategia de implementación si quiere distribuir la macro.
Grabar una macro
Al hacer clic en el botón Macro de la pestaña Desarrollador, se abrirá el cuadro de diálogo Macros, que le proporciona acceso a macros o subrutinas de VBA disponibles de un documento o aplicación específicos. El botón Visual Basic abre el Editor de Visual Basic, donde puede crear y editar código VBA.
Otro botón de la pestaña Desarrollador de Word y Excel es el botón Grabar macro, que genera automáticamente código VBA que puede reproducir las acciones que realice en la aplicación. Grabar macro es una herramienta realmente útil que puede usar para obtener más información sobre VBA. Si lee el código generado, podrá comprender en profundidad VBA y proporcionar un puente estable entre sus conocimientos de Office como usuario y sus conocimientos como programador. La única advertencia es que el código generado puede resultar confuso, ya que el editor de macros tiene que realizar algunos supuestos en relación con sus intenciones, y esos supuestos no son necesariamente precisos.
Para grabar una macro
Abra un nuevo libro en Excel y haga clic en la pestaña Desarrollador de la cinta de opciones. Haga clic en Grabar macro y acepte todas las opciones de configuración predeterminadas del cuadro de diálogo Grabar macro, incluyendo Macro1, el nombre de la macro y Este libro como la ubicación.
Haga clic en Aceptar para empezar a grabar la macro. Como verá, el texto del botón cambiará a Detener grabación. Haga clic en ese botón en cuanto complete las acciones que quiera grabar.
Haga clic en la celda B1 y escriba la primera cadena clásica del programador: Hola a todos. Deje de escribir y observe el botón Detener grabación; como puede ver, está atenuado, ya que Excel está esperando a que termine de escribir el valor en la celda.
Haga clic en la celda B2 para completar la acción en la celda B1 y, después, haga clic en Detener grabación.
Haga clic en Macros, en la pestaña Desarrollador, seleccione Macro1 si no está seleccionada y, después, haga clic en Editar para ver el código de Macro1 en el Editor de Visual Basic.
Figura 2. Código de macro en el Editor de Visual Basic
Analizar el código
La macro que creó debe tener una apariencia similar a la del siguiente código.
Sub Macro1()
'
' Macro1 Macro
'
'
Range("B1").Select
ActiveCell.FormulaR1C1 = "Hello World"
Range("B2").Select
End Sub
Observe las similitudes con respecto al fragmento de código anterior que seleccionó texto en la celda A1, así como las diferencias. En este código, se selecciona la celda B1 y, a continuación, la cadena "Hello World" se aplica a la celda que se ha activado. Las comillas que delimitan el texto especifican un valor de cadena en oposición a un valor numérico.
¿Recuerda cuando hizo clic en la celda B2 para volver a mostrar el botón Detener grabación? Esa acción también se muestra como una línea de código. La grabadora de macros registra todas las pulsaciones de tecla.
Las líneas de código que empiezan con un apóstrofe y que el Editor muestra en verde son comentarios que explican el código o que recuerdan los programadores el propósito del código. VBA omite toda línea, o parte de una línea, que empieza con una comilla simple. Escribir comentarios de forma clara y apropiada en el código es importante; sin embargo, esta discusión no pertenece al ámbito de este artículo. Las referencias subsiguientes a este código no incluyen esas cuatro líneas de comentario.
Cuando la grabadora de macros genera el código, usa un algoritmo complejo para determinar los métodos y las propiedades que tenía intención de usar. Si no reconoce una propiedad específica, hay disponibles varios recursos que le pueden servir de ayuda. Por ejemplo, en la macro que grabó, la grabadora de macros generó código que se refiere a la propiedad FormulaR1C1. ¿No está seguro de lo que eso significa?
Nota:
Tenga en cuenta que el objeto Application está implícito en todas las macros de VBA. El código que registró funciona con Application. al principio de cada línea.
Usar la ayuda para desarrolladores
Seleccione FormulaR1C1 en la macro grabada y presione F1. El sistema de ayuda ejecuta una búsqueda rápida, determina que los temas adecuados están en la sección Desarrollador de Excel de la Ayuda de Excel y muestra una lista de la propiedad FormulaR1C1. Puede hacer clic en el vínculo para obtener más información sobre la propiedad; pero, antes de hacerlo, tenga en cuenta el vínculo Referencia del modelo de objetos de Excel próximo a la parte inferior de la ventana. Haga clic en el vínculo para ver una lista larga de objetos que Excel usa en su modelo de objetos para describir las hojas de cálculo y sus componentes.
Haga clic en cualquiera de esos objetos para ver las propiedades y métodos válidos para ese objeto específico, además de referencias cruzadas a diferentes opciones relacionadas. En muchas de las entradas de la ayuda también se incluyen ejemplos de código breves que le pueden resultar útiles. Por ejemplo, puede seguir los vínculos del objeto Borders para ver cómo establecer un borde en VBA.
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
Edición del código
El código de bordes tiene una apariencia distinta del de la macro grabada. Lo que puede resultar confuso con un modelo de objetos es que hay más de una manera de dirigirse a un objeto dado, a la celda A1 en este ejemplo.
A veces la mejor manera de aprender programación es hacer pequeños cambios en algún código activo y ver qué resultado se obtiene. Inténtelo ahora. Abra Macro1 en el Editor de Visual Basic y modifique el código como se indica a continuación.
Sub Macro1()
Worksheets(1).Range("A1").Value = "Wow!"
Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub
Sugerencia
Use Copiar y pegar todas las veces que sea posible cuando trabaje con código para evitar errores de escritura.
No es necesario que guarde el código para probarlo; por lo tanto, para volver al documento de Excel, haga clic en Macros en la pestaña Desarrollador, seleccione Macro1 y, después, haga clic en Ejecutar. La celda A1 contiene ahora el texto Wow! y tiene un borde de línea doble a su alrededor.
Figura 3. Resultados de la primera macro
Grabó una macro, leyó la documentación del modelo de objetos y creó una programación simple para que un programa de VBA realice una tarea específica. ¡Enhorabuena!
¿No funciona? Siga leyendo para obtener sugerencias de depuración en VBA.
Consejos y sugerencias de programación
Empezar con ejemplos
La comunidad de VBA es muy amplia; una búsqueda en la Web casi siempre arroja como resultado un ejemplo de código de VBA que ejecuta una tarea similar a la que usted desea realizar. Si no puede encontrar un buen ejemplo, intente dividir la tarea en pequeñas unidades y realice una búsqueda de cada una de ellas, o bien intente pensar en un problema más común pero similar. Comenzar con un ejemplo puede ahorrarle horas de tiempo.
Esto no quiere decir que haya código gratuito y bien elaborado esperándole en la Web. De hecho, es posible que encuentre partes de código con errores. La idea es que los ejemplos que encuentre en línea o en la documentación de VBA sirvan como introducción. Recuerde que aprender programación requiere tiempo y análisis. Antes de verse apurado para usar otra solución para resolver un problema, pregúntese si VBA es la elección más adecuada para ese problema.
Simplificar un problema
La programación puede volverse compleja muy pronto. Es esencial, especialmente para un principiante, dividir el problema en unidades lógicas tan pequeñas como sea posible y, después, escribir y probar cada parte por separado. Si está trabajando con un código muy extenso que le genera confusión, deténgase y deje de lado el problema. Cuando vuelva al problema, copie una pequeña parte del problema en un nuevo módulo, resuelva esa parte, active el código y pruébelo para ver si funciona. Después, continúe con la siguiente parte.
Errores y depuración
Hay dos tipos de errores principales en la programación: errores de sintaxis, que no cumplen las reglas gramaticales del lenguaje de programación, y errores en tiempo de ejecución, que parecen ser sintácticamente correctos pero impiden efectuar la operación cuando VBA intenta ejecutar el código.
Aunque pueda ser frustrante corregirlos, los errores de sintaxis son fáciles de detectar; el Editor de Visual Basic emite un aviso sonoro y un destello cuando se comete un error de este tipo al escribir el código.
Por ejemplo, es necesario delimitar con comillas dobles los valores de cadena en VBA. Para averiguar qué ocurre cuando se usan comillas simples en su lugar, vuelva al Editor de Visual Basic y reemplace la cadena "Wow!" en el ejemplo de código por "Wow!" (es decir, la palabra Wow entre comillas simples). Si hace clic en la línea siguiente, en el Editor de Visual Basic se mostrará un mensaje. El error “Error de compilación: se esperaba una expresión” no es muy útil, pero la línea que genera el error se volverá de color rojo para indicarle que tiene un error de sintaxis en esa línea y que, como resultado, el programa no se ejecutará.
Haga clic en Aceptar y vuelva a cambiar el texto por "Wow!".
Los errores en tiempo de ejecución son más difíciles de detectar porque la sintaxis de programación parece ser correcta, pero el código produce un error cuando VBA intenta ejecutarlo.
Por ejemplo, abra el Editor de Visual Basic y cambie el nombre de propiedad Value por ValueX en la Macro, introduciendo deliberadamente un error en tiempo de ejecución ya que el objeto Range no tiene una propiedad denominada ValueX. Vuelva al documento de Excel, abra el cuadro de diálogo Macros y vuelva a ejecutar Macro1. Debería ver un cuadro de mensaje de Visual Basic que explica el error en tiempo de ejecución con el texto "Object doesn't support this property of method". Aunque ese texto está claro, elija Depurar para obtener más información.
Cuando vuelve al Editor de Visual Basic, este se encuentra en un modo de depuración especial que usa el color amarillo para resaltar la línea de código incorrecta. Como se esperaba, la línea que incluye la propiedad ValueX es la que está resaltada.
Se pueden realizar cambios en el código VBA mientras se está ejecutando. Por lo tanto, vuelva a cambiar ValueX por Value y haga clic en el pequeño botón de reproducción verde que verá debajo del menú Depurar. El programa se volverá a ejecutar con normalidad.
Le recomendamos que obtenga información sobre cómo usar el depurador de una forma más específica para crear programas más complejos y largos. Como mínimo, obtenga información sobre cómo establecer puntos de interrupción para detener la ejecución en un punto donde quiera analizar el código, como agregar relojes para ver los valores de diferentes variables y propiedades a medida que se ejecute el código, y cómo pasar por el código línea a línea. Todas estas opciones están disponibles en el menú Depurar, y los usuarios avanzados del depurador suelen memorizar los métodos abreviados de teclado correspondientes.
Uso correcto de los materiales de referencia
Para abrir la Referencia para desarrolladores integrada en la Ayuda de Office, haga clic en el signo de interrogación de la cinta de opciones para abrir la referencia de la Ayuda desde cualquier aplicación de Office, o bien presione la tecla F1. Después, a la derecha del botón Buscar, haga clic en la flecha desplegable para filtrar el contenido. Haga clic en Referencia para desarrolladores. Si no ve la tabla de contenido en el panel izquierdo, haga clic en el pequeño icono del libro para abrirla y, después, expanda la referencia del modelo de objetos desde allí.
Figura 5. El filtrado que se realice en la Ayuda para desarrolladores se aplica a todas las aplicaciones de Office.
El tiempo dedicado a explorar la Referencia de modelos de objetos vale la pena. Después de conocer los principios básicos de la sintaxis VBA y de los modelos de objetos para la aplicación de Office con la que se está trabajando, avanzará de las conjeturas a la programación metódica.
Por supuesto, el Centro para desarrolladores de Microsoft Office es un portal excelente donde encontrará artículos, sugerencias e información de la comunidad.
Búsqueda de foros y grupos
Todos los programadores a veces se bloquean, incluso después de leer todos los artículos de referencia que pudieron encontrar y perder el sueño por pensar en distintas formas de resolver un problema. Afortunadamente, Internet ha fomentado una comunidad de programadores que se ayudan entre sí para resolver problemas de programación.
Toda búsqueda en la Web de "foro de desarrolladores de office" muestra varios grupos de discusión. Puede buscar "desarrollo de office" o la descripción de un problema para encontrar foros, entradas de blog o artículos.
Si ya ha hecho todo lo posible para resolver un problema, no tenga miedo de exponer su consulta en un foro de programadores. En estos foros son bienvenidos los mensajes de nuevos programadores y muchos de los programadores expertos se complacen en ayudar.
A continuación, se explican algunas cuestiones de protocolo que se deben tener en cuenta a la hora de exponer una consulta en un foro de programadores:
Antes de publicar una consulta, busque en el sitio las preguntas más frecuentes o las pautas que los miembros desean que se cumplan. Asegúrese de exponer contenido de forma coherente con esas pautas y en la sección correcta del foro.
Incluya un ejemplo de código claro y completo, y considere la posibilidad de editar su código de modo que sea más claro para otras personas cuando es parte de una sección más extensa del código.
Describa el problema de forma clara y concisa, y resuma cada uno de los pasos que llevó a cabo para resolverlo. Dedique el tiempo necesario para escribir la pregunta de la mejor manera posible, especialmente si se siente inquieto o tiene prisa. Presente la situación de modo que tenga sentido para los lectores la primera vez que leen la exposición del problema.
Sea amable y exprese su agradecimiento.
Acciones avanzadas de programación
Aunque este artículo es breve y solo se explican brevemente los conceptos básicos de VBA y programación, esperamos que sea lo suficientemente útil a modo de introducción.
En esta sección se explican brevemente algunos otros temas clave.
Variables
En los ejemplos simples presentados en este artículo, ha manipulado objetos ya creados por la aplicación. Es posible que desee crear sus propios objetos para almacenar valores o referencias a otros objetos para su uso temporal en la aplicación. Estos se denominan variables.
Para usar una variable en VBA, tiene que indicar a VBA el tipo de objeto que representa la variable con la instrucción Dim. Después, configure su valor y úselo para establecer otras variables o propiedades.
Dim MyStringVariable As String
MyStringVariable = "Wow!"
Worksheets(1).Range("A1").Value = MyStringVariable
Bucles y bifurcaciones
Los programas simples de este artículo ejecutan una línea cada vez, empezando por arriba. La verdadera eficacia de la programación radica en las opciones que ofrece para determinar qué líneas del código se deben ejecutar, de acuerdo con la condición o las condiciones que se especifiquen. Es posible ampliar esas capacidades aún más al repetir una operación varias veces. Por ejemplo, el siguiente código amplía Macro1.
Sub Macro1()
If Worksheets(1).Range("A1").Value = "Yes!" Then
Dim i As Integer
For i = 2 To 10
Worksheets(1).Range("A" & i).Value = "OK! " & i
Next i
Else
MsgBox "Put Yes! in cell A1"
End If
End Sub
Escriba o pegue el código en el Editor de Visual Basic y, después, ejecútelo. Siga las indicaciones del cuadro de mensaje que se muestre y cambie el texto de la celda A1 de Wow! a “Sí” y vuelva a ejecutarlo para ver la utilidad de los bucles. En este fragmento de código se demuestra el uso de variables, bifurcaciones y bucles. Léalo detenidamente después de verlo en acción e intente determinar lo que ocurre a medida que se ejecute cada línea.
Todas las aplicaciones de Mi Office: el código de ejemplo
Aquí encontrará algunos scripts que puede probar; cada una resuelve un problema real de Office.
Crear un correo electrónico en Outlook
Sub MakeMessage()
Dim OutlookMessage As Outlook.MailItem
Set OutlookMessage = Application.CreateItem(olMailItem)
OutlookMessage.Subject = "Hello World!"
OutlookMessage.Display
Set OutlookMessage = Nothing
End Sub
Tenga en cuenta que hay situaciones en las que puede desear automatizar el correo electrónico en Outlook; también puede utilizar plantillas.
Eliminar filas vacías de una hoja de cálculo de Excel
Sub DeleteEmptyRows()
SelectedRange = Selection.Rows.Count
ActiveCell.Offset(0, 0).Select
For i = 1 To SelectedRange
If ActiveCell.Value = "" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Next i
End Sub
Tenga en cuenta que puede seleccionar una columna de celdas y ejecutar esta macro para eliminar todas las filas de la columna seleccionada que tienen celdas en blanco.
Eliminar cuadros de texto vacíos en PowerPoint
Sub RemoveEmptyTextBoxes()
Dim SlideObj As Slide
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
For Each SlideObj In ActivePresentation.Slides
For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Set ShapeObj = SlideObj.Shapes(ShapeIndex)
If ShapeObj.Type = msoTextBox Then
If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
ShapeObj.Delete
End If
End If
Next ShapeIndex
Next SlideObj
End Sub
Tenga en cuenta que este código recorre en bucle todas las diapositivas y elimina todos los cuadros de texto que no tienen texto. La variable de recuento disminuye en vez de aumentar porque cada vez que el código elimina un objeto, quita ese objeto de la colección, por lo tanto, el recuento disminuye.
Copiar un contacto de Outlook en Word
Sub CopyCurrentContact()
Dim OutlookObj As Object
Dim InspectorObj As Object
Dim ItemObj As Object
Set OutlookObj = CreateObject("Outlook.Application")
Set InspectorObj = OutlookObj.ActiveInspector
Set ItemObj = InspectorObj.CurrentItem
Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub
Tenga en cuenta que este código copia el contacto abierto actualmente en Outlook en el documento de Word abierto. Este código solamente funciona si hay un contacto abierto actualmente para inspeccionar en Outlook.
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.