我想创建一个 Word 宏来分离文本和图像。该宏应该首先插入文本,然后将文本内的图像移动到文档末尾,并用显示图像编号的索引替换图像,从第一张图像到最后一张图像。如果有人能帮忙,我将不胜感激。
我查看了许多网站,并编写了以下代码。此代码只是用一种索引形式的文本替换文档中的任何图像。例如,它用简单的索引“image1.jpg”替换第一个图像,依此类推。但我的问题是,我不想只用编号文本索引替换图像。我的目标也是将图像 1 移动到文档末尾。这应该发生在文档中的第二幅图像上,即用编号索引替换第二幅图像,然后将图像移动到文档末尾(第一幅图像之后),其他图像也是如此。我猜必须将此代码与其他一些代码一起添加才能实现这一点。如果有人能帮忙,这将对使用 Microsoft Word 宏使网页适合打印在纸上大有帮助。因为有时并不总是需要打印文档中的图像,仅文本就足够了。
Dim oILShp As InlineShape
Dim ILShpIndex As Integer
For Each oILShp In ActiveDocument.InlineShapes
ILShpIndex = ILShpIndex + 1
'insert text in place where InlineShape is located
ActiveDocument.Range(oILShp.Range.Start, oILShp.Range.End).Text = _
"[Image" & ILShpIndex & ".Jpg]"
'delete picture is not needed - it was simply replaced with text
Next
答案1
下面的代码将循环遍历内联形状,将段落添加到文档末尾并将内联形状移动到那里
Dim oILShp As InlineShape
Dim ILShpIndex As Long
Dim oPara1 As Paragraph
With ActiveDocument
.Content.Paragraphs.Add
For ILShpIndex = 1 To .InlineShapes.Count
Set oILShp = .InlineShapes(1)
Set oPara1 = .Content.Paragraphs.Add
oPara1.Range.InsertParagraphAfter
oPara1.Range.FormattedText = oILShp.Range.FormattedText
.Range(oILShp.Range.Start, oILShp.Range.End).Text = "[Image" & ILShpIndex & ".Jpg]"
Next ILShpIndex
End With
请注意,由于您无论如何都需要一个计数器,因此您可以使用它来循环遍历 inlineShapes,使用For Each oILShp In ActiveDocument.InlineShapes
将导致您无限循环遍历您将一直移动到文档末尾的形状。