我有一个包含 500 多张嵌入图像的 Word 文档。
对于文档中的每个图像,我想从图像的“替代文本”部分获取“描述”(当您右键单击图像>属性>替代文本时,您可以看到这一点)
然后我想将该替代文本作为普通文本放在图像下方。
有没有办法可以用 Word 中的 vb 宏来做到这一点?
我在 Windows 7 上使用 Microsoft Word 2010。
答案1
Word VBA 宏在图像下方插入替代文本
Sub InsertAltTextBelowImages()
For i = ActiveDocument.Shapes.Count To 1 Step -1
If ActiveDocument.Shapes(i).Type = msoPicture Then
ActiveDocument.Shapes(i).ConvertToInlineShape
End If
Next i
For Each img In ActiveDocument.InlineShapes
If img.Type = wdInlineShapePicture Then
img.Range.InsertAfter (vbCrLf & img.AlternativeText & vbCrLf)
End If
Next
End Sub
两个问题
Word 识别两种类型的图像:内联图像和浮动图像。浮动图像没有范围属性,这样 Word 就不知道图像实际上属于哪个段落。您可以将 (
ConvertToInlineShape
) 浮动图像转换为普通内联图像。但这会弄乱您的布局您不能像您所说的那样直接在“下方”插入文本。如果图片下方没有行怎么办?您必须插入至少两个分页符(
vbCrLf
)以及替代文本。这会再次弄乱您的 Word 布局
查看我的比较截图,了解我的宏如何影响布局
前
后
答案2
vb 宏可以完成用户可以做的所有事情,但对其进行编程将是一项艰巨的任务。
我建议将您的 word 文档导出为 html 文档。然后,您可以使用文本编辑器(例如 notepad++)对其进行编辑,并使用正则表达式的巧妙搜索/替换操作一次性将每个图像更改为您想要的内容。然后,您可以再次保存它,并在 word 中重新加载 html 文档以将其转换回 word 文档。
我敢打赌,这会让你完成这项工作比编写宏快 10 倍。