VBA宏统计文档图片数量返回0的问题(未识别JPEG/PNG)
问题原因与修正方案
你的代码只统计了Word中的浮动型图片(属于Shapes集合),但日常插入的JPEG/PNG大多是嵌入式图片——这类图片会被归入InlineShapes集合,不会被Shapes遍历到,所以返回统计数为0。
修正后的完整代码
Sub countfigures() Dim doc As Document Set doc = ActiveDocument Dim figureCount As Integer figureCount = 0 ' 统计浮动型图片(可自由拖动的图片) Dim shp As Shape For Each shp In doc.Shapes If shp.Type = msoPicture Then figureCount = figureCount + 1 End If Next shp ' 统计嵌入式图片(默认插入方式,和文本同排) Dim inlineShp As InlineShape For Each inlineShp In doc.InlineShapes If inlineShp.Type = wdInlineShapePicture Then figureCount = figureCount + 1 End If Next inlineShp MsgBox "文档中的图片总数: " & figureCount End Sub
关键说明
- Word的图片分两种存储类型:
- 浮动型:属于
Shapes,支持自由调整位置/环绕方式,用msoPicture判断类型 - 嵌入式:属于
InlineShapes,是默认插入模式(插入后和文本在同一行),用wdInlineShapePicture判断类型
- 浮动型:属于
- 原代码仅遍历了
Shapes集合,完全遗漏了嵌入式图片,这是统计为0的核心原因
内容的提问来源于stack exchange,提问作者Nosail
相关产品推荐
相关产品推荐

