Cuando un libro de Excel es revisado por varias personas, generalmente termina con una gran cantidad de celdas repletas de comentarios y para ser honestos, el revisar comentario por comentario no es eficiente.
Extraer comentarios de celdas
En esta ocasión crearemos una macro que nos ayudará a extraer los comentarios de celdas y que colocará el texto de dichos comentarios en las celdas de otra hoja. Como base para este ejemplo utilizaré la siguiente hoja con comentarios:
Después de ejecutar la macro habremos extraído los comentarios y estarán ubicados en una hoja diferente a la original de la siguiente manera:
Macro para extraer comentarios
La lógica de nuestra macro será la siguiente. Una vez seleccionado un rango de nuestra hoja haremos una revisión de cada una de las celdas y copiaremos los comentarios a una hoja diferente. Considera el siguiente código:
Sub ExtraerComentarios() 'Definir la hoja donde se colocarán los comentarios Dim hojaComentarios As Worksheet Set hojaComentarios = ActiveWorkbook.Sheets("Hoja2") 'Extraer los comentarios si se ha seleccionado un rango If TypeName(Selection) = "Range" Then 'Establecer el rango a inspeccionar Set rango = Intersect(Selection, ActiveSheet.UsedRange) 'Recorrer todas las celdas del rango For Each celda In rango.Cells 'Obtener el comentario de la celda On Error Resume Next comentario = celda.Comment.Text 'Si la celda tiene un comentario If Len(comentario) > 0 Then fila = fila + 1 'Insertar la direccón de la celda en la columna A 'y el texto del comentario en la columna B hojaComentarios.Range("A" & fila) = celda.Address hojaComentarios.Range("B" & fila) = comentario 'Opcional: Borrar el comentario original 'celda.Comment.Delete End If comentario = "" On Error GoTo 0 Next End If End Sub
La línea 5 define la hoja donde se colocarán los comentarios y deberás configurarla para utilizar la hoja de tu preferencia. En este ejemplo los comentarios están en la Hoja1 y por lo tanto colocaré los comentarios en la Hoja2. La línea 8 hace una validación para saber si el tipo de selección realizada en nuestra hoja es en realidad un rango de celdas ya que de esta manera nos aseguramos que no se haya seleccionado un gráfico o una caja de comentario dentro de la hoja.
La propiedad ActiveSheet.UsedRange nos da precisamente el rango seleccionado y es a partir de la línea 14 que comenzamos a recorrer cada una de las celdas del rango haciendo una evaluación de la longitud de su comentario. Si la celda no tiene comentario, la longitud de la propiedad celda.Comment.Text será de cero. Si por el contrario, encontramos que el comentario tiene una longitud mayor a cero, entonces copiamos tanto la dirección de la celda, como su comentario en la columna A y columna B de la hoja indicada por la variable hojaComentarios. De esta manera se repite el ciclo hasta que hayamos terminado de extraer los comentarios de las celdas del rango seleccionado.
Observa que en la línea 30 del código hay una sentencia que está comentada la cual puedes habilitar para eliminar por completo los comentarios de las celdas originales, por supuesto, la eliminación se hace una vez que se ha copiado el comentario a la nueva hoja. Si deseas habilitar esta opción solo remueve el comentario de dicha línea.
Extraer comentarios de un rango
Ahora probemos nuestra macro y para ello seleccionaré el rango de celdas A1:A16 y al ejecutar la macro obtendré el siguiente resultado:
Nuestra macro solamente extrae los comentarios de las celdas del rango seleccionado.
Extraer comentarios de toda la hoja
Si queremos extraer los comentarios de toda la hoja será suficiente con hacer clic en el botón Seleccionar todo que se encuentra justamente a la izquierda del encabezado de la columna A y por arriba del encabezado de la fila 1.
Esta misma selección la podemos hacer también con el atajo de teclado CTRL + E lo cual indicará a la macro que deberá extraer los comentarios de toda la hoja. Solo resta que descargues el archivo de trabajo y hagas tus propias pruebas de extracción de comentarios.