Cómo modificar tablas en Microsoft Word usando VBA

Articulos tematica Microsoft

Cambiar tablas individuales en un documento de Word sería una tarea que consumiría mucho tiempo. ¡Utilice VBA en su lugar!

Las tablas son una herramienta sólida en Microsoft Word y algunos documentos incluyen muchos de ellos. Cuando se trabaja con una gran cantidad de tablas, no es raro que alguien pregunte: "¿Puede modificar las tablas para que estén todas ...?" Hasta el final.

Puede entrar en pánico si tiene muchas tablas y alguien solicita muchos cambios de formato, pero no lo haga. Puede recorrer todas las tablas en un documento usando la colección de tablas VBA y hacer los mismos ajustes. Le mostraré dos funciones básicas de VBA que recorren la colección de tablas en este artículo. Cada tabla se convierte en texto en el primer paso. La segunda opción es hacer que el borde sea azul.

Estoy ejecutando Microsoft 365 en una PC con Windows 10 de 64 bits, aunque también se admiten versiones anteriores. Word Online no admite los procedimientos de VBA. Puede descargar los archivos demostration.docm, .doc y .cls para su comodidad.

Convertir a texto

Una tabla de Word es como cualquier otra tabla; muestra filas y columnas de datos relacionados. Crear y formatear uno es simple, pero es igual de fácil terminar con inconsistencias de una tabla a otra cuando hay muchas tablas en un documento complejo. Se necesita mucho más tiempo para dominar todas esas inconsistencias que para crearlas en primer lugar.

El procedimiento del Listado A es un bucle For Each simple que recorre todas las tablas del documento actual. Para hacer esto, el código hace referencia a la colección Tables y la constante wdSeparateByTabs de la propiedad de la tabla Separator. Es extremadamente simple y solo hace esto: convierte todas las tablas en texto. Está convirtiendo todas las tablas; Es importante tener en cuenta esto porque puede convertir una tabla que no desea convertir. Este procedimiento no le permitirá elegir.

Listado A

Sub ConvertTblsToText ()

'Convierta todas las tablas a texto.

Dim tbl como tabla

Si ActiveDocument.tables.Count = 0 Entonces

MsgBox "No hay tablas en este documento", vbOKOnly, "Error"

Salir de Sub

Terminará si

Para cada tbl en ActiveDocument.tables

'wdSeparateByCommas, wdSeparateByDefaultListSeparator,

'wdSeparateByParagraphs, wdSeparateByTabs

tbl.ConvertToText Separator: = wdSeparateByTabs

Siguiente

End Sub

Al convertir una tabla en texto, debe considerar cuatro delimitadores:

wdSeparateByCommas

wdSeparateByDefaultListSeparator

wdSeparateByParagraphs

wdSeparateByTabs

Agregué estas constantes al código como un comentario, lo que le facilita la adaptación de este código a su propio trabajo. Con la colección Tables, podría hacer mucho con las tablas; Elegí convertir porque requiere muy poco código. Sin embargo, dentro de ese ciclo, puede cambiar una sola propiedad para todas las tablas o reformatearlas por completo. El poder está en el bucle que le da acceso a la colección Tables. A partir de ahí, las posibilidades son numerosas.

Para ingresar al procedimiento, presione Alt + F11 para abrir el Editor de Visual Basic. En el Explorador de proyectos de la izquierda, seleccione ThisDocument. Puede ingresar el código manualmente o importar el archivo .cls descargable. Además, el procedimiento se encuentra en los archivos .docm y .doc descargables. Si ingresa el código manualmente, no lo pegue desde esta página web. En su lugar, copie el código en un editor de texto y luego péguelo en el módulo ThisDocument. Si lo hace, eliminará los caracteres web fantasma que, de lo contrario, podrían causar errores.

Si está utilizando una versión en cinta, asegúrese de guardar el libro como un archivo habilitado para macros. Si está trabajando en la versión del menú, puede omitir este paso. Ahora, ejecutemos este procedimiento en el archivo de demostración de la siguiente manera:

Haga clic en la pestaña Desarrollador y luego elija Macros en el grupo Código.

En el cuadro de diálogo resultante, elija ConvertTblsToText y haga clic en Ejecutar.

Después de ejecutar este procedimiento, las tres tablas ahora son cadenas de texto sin formato, separadas por tabulaciones. Recuerde, si su delimitador no son caracteres de tabulación, asegúrese de actualizar esa propiedad en su código. Además, si el documento no tiene tablas, el código mostrará un cuadro de mensaje de información y luego se detendrá. Lo más probable es que desee agregar un mensaje más descriptivo a su cuadro de mensajes.

Si desea continuar y está utilizando el archivo de demostración, presione Ctrl + Z tres veces para deshacer las conversiones de la tabla. O cierre el archivo sin guardar y vuelva a abrirlo. Estamos a punto de cambiar las propiedades de la tabla ampliando un poco el procedimiento.

Cambiar un formato

El Listado A recorre la colección Tables, pero puede hacer mucho más que convertir tablas en texto. Puede aplicar un nuevo estilo de tabla, cambiar un color de borde y más. Mantendremos el siguiente procedimiento , Listado B , tan simple como el primero cambiando solo una propiedad, el color del borde exterior.

Listado B

Sub ChangeTableBorderColor ()

'Cambie el color del borde exterior a azul.

Dim tbl como tabla

Si ActiveDocument.tables.Count = 0 Entonces

MsgBox "No hay tablas en este documento", vbOKOnly, "Error"

Salir de Sub

Terminará si

Para cada tbl en ActiveDocument.tables

tbl.Borders.OutsideColor = wdColorBlue

Siguiente

End Sub

Este procedimiento también recorre la colección Tablas, deteniéndose en cada tabla del documento y cambiando el color del borde exterior a azul. Elegí esta propiedad porque hay muchas posibilidades (y constantes de color). Pero una vez que sepa cómo recorrer la colección de Tablas, es fácil realizar cambios elaborados automáticamente usando VBA.

Fecha actualización el 2021-10-25. Fecha publicación el 2021-10-25. Categoría: word Autor: Oscar olg Mapa del sitio Fuente: bollyinside