如何解决VBA EXCEL,在找到的文字下方的行中将图像插入Word文档
我正在使用VBA代码通过Excel工作簿中的数据创建自动文档生成工具。我可以成功找到并替换文档中的文本并添加/插入图像。但是,我在将图像设置在文档中的正确位置时遇到了麻烦。下面的代码当前可以替换所有想要的文本并插入正确的图像,但是,它们只是被推入文档的顶部。
有什么方法可以返回找到的文本的位置,基于该位置声明一个范围,并使用该范围将inline-shape(image)插入正确的位置(tagName之后的行)文本)?这是我下面的find replace宏的一个片段。
上下文:我以前通过从excel调用单词宏使所有这些工作变得很容易,但是这需要完全基于excel。该程序将处理来自用户的许多不同文档,并且所有这些Word文档中都将没有vba。
For Each sr2 In wDoc.StoryRanges
With sr2.Find
.Text = tagName
.Replacement.Text = tagValue
.Wrap = 1
.Execute Replace:=2
If .Found = True Then
sr2.Inlineshapes.AddPicture fileName:=ThisWorkbook.Path & "\1. SOW Templates\ Client Summary import.jpg"
End If
End With
Next sr2
解决方法
要轻松遍历Find方法的结果,如果您使用Replace:=wdReplaceOne
(wdReplaceOne = 1)而不是Replace:=wdReplaceAll
(wdReplaceAll = 2),则会更容易。 (基于此this answer)。
要插入图像,建议您选择想要图像的范围。将其添加为自由浮动图像,然后将其转换为嵌入式形状。
这是一种实现方法:
Dim r As Object 'Word.Range
Dim bFound As Boolean
bFound = True
Set r = wDoc.Content
r.Find.ClearFormatting
Do While bFound
With r.Find
.Text = tagname
.Replacement.Text = tagValue
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
bFound = .Execute(Replace:=wdReplaceOne)
End With
If bFound Then
r.Select
Selection.Next(Unit:=wdParagraph,Count:=1).Select
Dim img As Object 'Word.Shape
Set img = wDoc.Shapes.AddPicture(Filename:=ThisWorkbook.Path & "\1. SOW Templates\ Client Summary import.jpg")
img.ConvertToInlineShape
End If
Loop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。