可批量提取word嵌入图片的四种方法:一、另存为网页,自动生成“文档名_files”文件夹;二、重命名.docx为.zip后解压,进入word\media目录;三、运行vba宏导出为png;四、用powershell脚本自动化处理。

如果您需要从Word文档中批量提取所有嵌入的图片,而不是逐张复制粘贴,则可以通过文件解包、另存为网页或使用VBA宏等方式实现。以下是解决此问题的步骤:
一、将Word文档另存为网页格式提取图片
Word文档保存为“网页(*.htm; *.html)”时,会自动将所有内嵌图片导出至一个同名文件夹中,无需第三方工具,兼容性高且操作简单。
1、打开目标Word文档,点击左上角“文件”选项卡。
2、选择“另存为”,在保存位置中指定文件夹路径。
3、在“保存类型”下拉菜单中选择网页(*.htm; *.html)。
4、点击“保存”按钮,Word将生成一个HTML文件及一个名为“文档名_files”的文件夹。
5、进入该文件夹,即可看到所有已提取的图片文件,格式通常为PNG或JPG,文件名以“image001”“image002”等顺序编号。
二、通过ZIP解包方式提取图片(适用于.docx/.docm)
Word .docx 文件本质上是ZIP压缩包,内部以标准文件结构存放媒体资源,直接解压即可获取原始图片文件,保留原始分辨率与格式。
1、将Word文档后缀名由“.docx”改为“.zip”,例如将“报告.docx”重命名为“报告.zip”。
2、右键该ZIP文件,选择“解压到当前文件夹”或使用解压软件打开。
3、进入解压后的文件夹,依次打开“word”→“media”子目录。
4、该“media”文件夹中即包含文档中所有插入的图片,文件名保持原始命名(如“image1.png”“picture2.jpeg”),无质量损失,且支持透明通道、矢量图等原生格式。
三、使用VBA宏一键导出全部图片
通过运行内置VBA脚本,可自动遍历文档中所有InlineShape和Shape对象,并按顺序保存为独立图片文件,支持自定义保存路径与格式。
构建并排查Microsoft Word邮件合并及DOCX模板工作流,使用合并域、内容控件、文档属性、重复区块、数据等
1、在Word中按Alt + F11打开VBA编辑器。
2、在左侧项目窗口中,双击对应文档的ThisDocument模块。
3、粘贴以下代码:
Sub ExportAllImages()
Dim i As Long, shp As Shape, ils As InlineShape
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show -1 Then Exit Sub
For Each ils In ActiveDocument.InlineShapes
i = i + 1
ils.ConvertToPicture
ils.Range.Copy
ActiveDocument.InlineShapes(i).Range.PasteSpecial Link:=False, DisplayAsIcon:=False, DataType:=wdPasteMetafilePicture
Next
For Each shp In ActiveDocument.Shapes
i = i + 1
shp.Export fd.SelectedItems(1) & "\Shape_" & Format(i, "000") & ".png", wdExportFormatPNG
Next
MsgBox "共导出 " & i & " 张图片至:" & fd.SelectedItems(1)
4、关闭编辑器,返回Word,按Alt + F8,选择“ExportAllImages”,点击“运行”。
5、在弹出的文件夹选择对话框中指定目标路径,确认后图片将自动导出为PNG格式,每张图片按序号命名,避免覆盖。
四、使用PowerShell脚本批量提取(高级用户适用)
对已知文档路径的批量处理场景,可通过PowerShell调用Word COM对象,自动化打开、遍历并导出所有InlineShape图像,适合处理多个文档。
1、新建文本文档,输入以下脚本并保存为“ExtractImages.ps1”:
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$word = New-Object -ComObject Word.Application
$doc = $word.Documents.Open("C:\path\to\your\document.docx")
$i = 1
foreach ($ils in $doc.InlineShapes) {
if ($ils.Type -eq 3) {
$ils.Export("C:\output\img_$i.png", 1)
$i++
}
}
$doc.Close()
$word.Quit()
2、以管理员身份运行PowerShell,执行:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,允许本地脚本运行。
3、执行命令:.\ExtractImages.ps1,脚本将启动Word后台进程,导出所有支持的内联图片至指定路径。
4、导出完成后,检查目标文件夹,确认图片数量与文档中实际图片一致,导出格式为PNG,分辨率为原始DPI设置值。










