咨询:用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
相关产品推荐
相关产品推荐

