一键导出Excel中的所有批注!

个人比较反感使用批注,这玩意使用起来方便,但是别人查看非常的不方便
但是工作中还是经常遇到使用的,有时候一个文件中表特别多,我又不想一个一个去看,其次即使看了也难保有遗漏,所以我就写了一个一键导出!
我们先看一下成品效果!
▼ 动画演示
功能说明
1、点击提取批注,会先清空原本提取的内容,保证数据最新
2、检查当前工作薄中所有工作表已使用区域,如果有批注,直接提取!
3、结果包括三列,分别对应是工作表名称所在单元格地址批注内容
4、批注内容已建立超链接,点击批注即可查看批注所在单元格及相关内容
5、由于高版本中批注对象修改为CommentThreaded,代码已做容错
如果需要其他相关内容,简单修改代码即可使用,如单元格中的内容中内容等!
代码截图
源码分享
'公众号:Excel办公实战
'作者:E精精
'功能:提取文件中的所有批注及相关信息
'---------------------------------------------------------
Sub 提取批注()
    Dim rng As Range
    Dim sht As Worksheet
    Dim n As Long
    Dim oComment As Object
    Dim res(1 To 10000, 1 To 3)
    For Each sht In ThisWorkbook.Sheets
        For Each rng In sht.UsedRange
            If Application.Version > 15 Then
                Set oComment = rng.CommentThreaded
            Else
                Set oComment = rng.Comment
            End If
            
            If Not oComment Is Nothing Then
                n = n + 1
                res(n, 1) = sht.Name '表名
                res(n, 2) = rng.Address(0, 0) '单元格地址
                res(n, 3) = oComment.Text '批注
            End If
        Next
    Next
    
    With ThisWorkbook
        With .Sheets("批注")
            .UsedRange.ClearContents
            .[A1:C1] = [{"工作表名称","地址","批注"}]
            .Range("A2").Resize(n, 3) = res
            For k = 2 To n + 1
                .Hyperlinks.Add Anchor:=.Cells(k, 3), Address:="", _
                SubAddress:="'" & .Cells(k, 1).Value & "'!" & .Cells(k, 2).Value, _
                TextToDisplay:=.Cells(k, 3).Value
            Next
        End With
    End With
End Sub
(0)

相关推荐