Os fóruns de discussão são bacanas por gerarem situações das mais diversas, o que por consequência acaba gerando soluções que são de igual teor e variedade.
Mais uma que surgiu da necessidade de um colega, a macro abaixo copia todos os comentários de uma planilha do Excel para uma outra informada:
Sub CopiarComentarios(ByVal PlanilhaOrigem As String, ByVal PlanilhaDestino As String)
Dim wsOrigem As Worksheet, wsDestino As Worksheet
Dim c As Comment
Dim r As Range
Set wsOrigem = ThisWorkbook.Worksheets(PlanilhaOrigem)
Set wsDestino = ThisWorkbook.Worksheets(PlanilhaDestino)
For Each c In wsOrigem.Comments
Debug.Print c.Parent.Address
Set r = wsDestino.Range(c.Parent.Address)
r.AddComment
r.Comment.Visible = c.Visible
r.Comment.Text Text:=c.Text
Next
End Sub |
Sub CopiarComentarios(ByVal PlanilhaOrigem As String, ByVal PlanilhaDestino As String)
Dim wsOrigem As Worksheet, wsDestino As Worksheet
Dim c As Comment
Dim r As Range
Set wsOrigem = ThisWorkbook.Worksheets(PlanilhaOrigem)
Set wsDestino = ThisWorkbook.Worksheets(PlanilhaDestino)
For Each c In wsOrigem.Comments
Debug.Print c.Parent.Address
Set r = wsDestino.Range(c.Parent.Address)
r.AddComment
r.Comment.Visible = c.Visible
r.Comment.Text Text:=c.Text
Next
End Sub
Sem muito segredo, o código percorre a coleção de comentários (Comments) existente na planilha origem informada. Para cada comentário encontrado, é criado um na planilha destino com os mesmos dados e referências de célula.
Para fazer uma chamada a esta macro, segue um exemplo:
Sub Teste()
Call CopiarComentarios("Plan1", "Plan2")
End Sub |
Sub Teste()
Call CopiarComentarios("Plan1", "Plan2")
End Sub
Que solicita obviamente que os comentários da planilha de nome Plan1 sejam copiados para a planilha de nome Plan2. Para testar, é só copiar o código para um módulo VBA, inserir alguns comentários na Plan1 e executar a macro Teste.
Bom proveito!