如何用宏或VBA批量将Word中嵌入的Excel2003工作表转为XLSX格式?
批量转换Word中嵌入的Excel 2003工作表为XLSX格式
完全可以通过Word VBA宏实现这个自动化流程,以下是具体的实现代码和操作步骤:
VBA宏代码
打开目标Word文档,按Alt+F11打开VBA编辑器,插入一个新模块,粘贴以下代码:
Sub ConvertEmbeddedXLStoXLSX() Dim doc As Document Dim inlineShape As InlineShape Dim shape As shape Dim excelApp As Object Dim excelWB As Object Dim savePath As String Dim fileCounter As Integer ' 设置保存路径(可自行修改,确保路径存在) savePath = ThisDocument.Path & "\转换后的Excel文件\" If Dir(savePath, vbDirectory) = "" Then MkDir savePath End If fileCounter = 1 Set doc = ThisDocument ' 处理行内嵌入对象 For Each inlineShape In doc.InlineShapes If inlineShape.Type = wdInlineShapeOLEObject Then If inlineShape.OLEFormat.ProgID Like "Excel.Sheet.8" Then ' Excel 2003格式的ProgID ' 激活嵌入的Excel对象 inlineShape.OLEFormat.Activate Set excelApp = GetObject(, "Excel.Application") Set excelWB = excelApp.ActiveWorkbook ' 另存为XLSX格式(FileFormat=51对应XLSX) excelWB.SaveAs Filename:=savePath & "转换文件_" & fileCounter & ".xlsx", FileFormat:=51 excelWB.Close SaveChanges:=False excelApp.Quit Set excelWB = Nothing Set excelApp = Nothing fileCounter = fileCounter + 1 End If End If Next inlineShape ' 处理浮动嵌入对象 For Each shape In doc.Shapes If shape.Type = msoEmbeddedOLEObject Then If shape.OLEFormat.ProgID Like "Excel.Sheet.8" Then shape.OLEFormat.Activate Set excelApp = GetObject(, "Excel.Application") Set excelWB = excelApp.ActiveWorkbook excelWB.SaveAs Filename:=savePath & "转换文件_" & fileCounter & ".xlsx", FileFormat:=51 excelWB.Close SaveChanges:=False excelApp.Quit Set excelWB = Nothing Set excelApp = Nothing fileCounter = fileCounter + 1 End If End If Next shape MsgBox "转换完成!共处理" & fileCounter - 1 & "个Excel文件,保存路径:" & savePath End Sub
代码说明
- 宏会遍历文档中所有行内嵌入和浮动嵌入的Excel对象,通过ProgID识别Excel 2003格式文件。
- 自动在原Word文档所在目录创建「转换后的Excel文件」子文件夹,按顺序命名保存转换后的XLSX文件。
- 转换完成后弹出提示框,显示处理数量和保存路径。
操作注意事项
- 运行宏前务必备份原Word文档,避免意外修改导致数据丢失。
- 确保电脑已安装Excel,且Word宏功能已启用(若被禁用,需在信任中心开启)。
- 若嵌入的Excel对象有密码保护,宏无法打开,需先解除密码再运行。
- 若需要替换原Word中的嵌入对象为XLSX格式,可在保存后添加代码删除原对象并插入新的XLSX嵌入(需调整代码逻辑)。
内容的提问来源于stack exchange,提问作者user935556
相关产品推荐
相关产品推荐

