You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:用Power Query合并带批注的Excel文件至Access时保留批注的方法

Power Query合并Excel时迁移批注/备注的解决方案

Power Query默认无法直接读取Excel单元格的批注或备注——它只抓取单元格的显示值,批注属于Excel的对象属性,不在常规数据读取范围内,直接合并的话批注会丢失。

既然手动复制批注到单元格不现实(711个文件),可以用VBA批量把批注提取成单元格数据,再用Power Query合并,步骤如下:

1. 用VBA批量提取批注到新列

写一个宏遍历所有Excel文件,自动把目标列的批注提取到相邻列,让Power Query能识别为普通数据列。

示例VBA代码

Sub 批量提取批注到列()
    Dim folderPath As String, fileName As String
    Dim wb As Workbook, ws As Worksheet
    Dim targetCol As String, commentCol As String
    
    ' 请修改以下参数
    folderPath = "C:\你的Excel文件夹路径\" ' 存放711个文件的文件夹
    targetCol = "A" ' 带有批注的目标列(比如A列)
    commentCol = "B" ' 批注将提取到目标列的右侧一列
    
    fileName = Dir(folderPath & "*.xlsx")
    Do While fileName <> ""
        Set wb = Workbooks.Open(folderPath & fileName)
        Set ws = wb.Sheets(1) ' 假设数据在第一个工作表,按需修改
        
        ' 添加批注列标题
        ws.Range(commentCol & "1").Value = "批注内容"
        
        ' 遍历目标列,提取批注
        Dim rowNum As Long
        For rowNum = 2 To ws.Cells(ws.Rows.Count, targetCol).End(xlUp).Row
            On Error Resume Next ' 跳过无批注的单元格
            ws.Range(commentCol & rowNum).Value = ws.Range(targetCol & rowNum).Comment.Text
            On Error GoTo 0
        Next rowNum
        
        wb.Save
        wb.Close
        fileName = Dir()
    Loop
    MsgBox "批量处理完成!"
End Sub

注意事项

  • 如果你的文件是新版Excel的**备注(Notes)**而非旧版批注(Comments),把代码里的.Comment.Text替换成.NoteText即可。
  • 运行前确认文件夹路径正确,且所有Excel文件处于关闭状态。

2. 用Power Query合并预处理后的文件

完成批注提取后,正常用Power Query的“从文件夹”功能合并所有文件,此时“批注内容”列会和其他数据列一起被导入,最终可以同步到Access数据库。

内容的提问来源于stack exchange,提问作者user5331890

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:03:29