Mientras trabaja con tablas en Word, es posible que desee completar las distintas celdas de una tabla con un valor establecido. Por ejemplo, es posible que desee copiar algo en el Portapapeles y luego pegar el contenido del Portapapeles en cada celda de una tabla. La siguiente macro funcionará:

Sub PasteToCells()

Dim TargetRange As Range     Dim oTargCell As Cell

If Selection.Cells.Count = 0 Then         'Quit if no cells in selection         MsgBox "No cells selected", vbCritical         Exit Sub     End If     On Error Resume Next     Set TargetRange = Selection.Range     For Each oTargCell In Selection.Cells         oTargCell.Range.Paste     Next oTargCell     TargetRange.Select End Sub

La macro comienza verificando para asegurarse de que la selección incluye algunas celdas. En caso contrario, se informa al usuario y finaliza la macro.

Luego, la selección se almacena en una variable para que pueda seleccionarse (nuevamente) al final de la macro. Sin este código, la macro dejaría el punto de inserción colapsado en la primera celda de la selección original.

La verdadera esencia de la macro está en el bucle For …​ Next. Recorre las celdas de la selección y reemplaza lo que esté allí con el contenido del Portapapeles. Finalmente, se vuelve a seleccionar la selección original y finaliza la macro.

Probablemente haya notado que también hay una instrucción On Error en la macro. Esta declaración básicamente le dice a Word que ignore cualquier error y continúe con la siguiente declaración. Los errores que podrían desencadenarse incluyen ejecutar la macro sin nada en el Portapapeles o intentar pegar una tabla dentro de una celda de la tabla. Word no hará ninguna de las dos tareas, pero seguirá intentándolo hasta que termine con todas las celdas de la selección.

Debe tener en cuenta que esta macro reemplaza lo que esté en las celdas seleccionadas con el contenido del Portapapeles; lo que estaba previamente en las celdas se pierde. Si, en cambio, desea agregar información al comienzo de las celdas, sin alterar el contenido existente de la celda, puede usar esta macro ligeramente modificada:

Sub PasteToCellsStart()

Dim TargetRange As Range     Dim oTargCell As Cell     Dim PasteRange As Range

If Selection.Cells.Count = 0 Then         'Quit if no cells in selection         MsgBox "No cells selected", vbCritical         Exit Sub     End If     On Error Resume Next     Set TargetRange = Selection.Range     For Each oTargCell In Selection.Cells         Set PasteRange = oTargCell.Range         PasteRange.Collapse wdCollapseStart         PasteRange.Paste     Next oTargCell     TargetRange.Select End Sub

Una última modificación sería crear una macro que se pegaría al final de lo que está en las celdas. Podría pensar que podría reemplazar wdCollapseStart con wdCollapseEnd en la macro anterior, pero eso no funciona correctamente dentro de las tablas. En su lugar, debe reemplazar el bucle For …​ Next en la macro anterior. El siguiente ejemplo muestra una versión modificada de la macro.

Sub PasteToCellsEnd()

Dim TargetRange As Range     Dim oTargCell As Cell     Dim PasteRange As Range

If Selection.Cells.Count = 0 Then         'Quit if no cells in selection         MsgBox "No cells selected", vbCritical         Exit Sub     End If     On Error Resume Next     Set TargetRange = Selection.Range     For Each oTargCell In Selection.Cells         Set PasteRange = oTargCell.Range.Characters.Last         PasteRange.Collapse wdCollapseStart         PasteRange.Paste     Next oTargCell     TargetRange.Select End Sub

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Esta sugerencia (13157) se aplica a Microsoft Word 2007, 2010, 2013, 2016, 2019 y Word en Office 365. Puede encontrar una versión de esta sugerencia para interfaz de menú anterior de Word aquí:

link: / word-Filling_Table_Cells_with_a_Macro [Llenando las celdas de la tabla con una macro].