通过Excel在MS Word书签中插入多个图像

我希望使用Excel将图像插入MS Word文档(.docx)中的书签。 我偶然发现一个Word VBA的解决方法,几乎​​完美的工作,除了它是当然,在Word中的代码(我只是将其保存在全局模板)。 之所以我需要它在Excel中是因为我无法将macros保存在.docx文件中 – 我不能将其保存为启用macros的文档,因为它会混淆现有的Excel中的VBA(另一个人做到了:)。 我用尽了所有努力Googlesearch,但没有确切的解决scheme。 作为参考,这里是我正在谈论的“修改”代码。 我从vbaexpress.com用户fumei复制它

Sub FillABookmark(strBM As String, strText As String) Dim j As Long With ActiveDocument .Bookmarks(strBM).Range _ .InlineShapes _ .AddPicture FileName:=strText j = ActiveDocument.InlineShapes.Count .InlineShapes(j).Select .Bookmarks.Add strBM, Range:=Selection.Range End With End Sub Sub InsertScreenshots() Call FillABookmark("Image_1", "C:\Users\Public\Documents\Image1.png") Call FillABookmark("Image_2", "C:\Users\Public\Documents\Image_2.png") Call FillABookmark("Image_3", "C:\Users\Public\Documents\Image_3.png") End Sub 

我将不胜感激任何forms的帮助:)

更新:

向伊姆兰大声喊叫:)你们的代码帮了我很大的忙,但是我似乎无法为多个图像工作,..我甚至不能把我所做的所有事情都做出来,将新图像粘贴到同一个书签上。 加上一个失败的Office 365添加到困境。 我将在稍后重新安装它,并将在明天发表评论:(我没有智慧,并试图将循环function并入我发布的原始代码中,下面的代码是我的失败尝试:

 Sub FillABookmark(bookmarkname As String, imagepath As String) Dim objWord As Object Dim objDoc As Object Set objWord = CreateObject("Word.Application") objWord.Visible = True objWord.Documents.Open "D:\test.docx" Set objDoc = objWord.activedocument With objDoc .Bookmarks("test1").Select .Shapes.AddPicture Filename:=imagepath End With With objDoc .Bookmarks("test2").Select .Shapes.AddPicture Filename:=imagepath End With With objDoc .Bookmarks("test3").Select .Shapes.AddPicture Filename:=imagepath End With End Sub Sub InsertScreenshots() Call FillABookmark("test1", "C:\Users\Public\Documents\image_1.png") Call FillABookmark("test2", "C:\Users\Public\Documents\image_2.png") Call FillABookmark("test3", "C:\Users\Public\Documents\iamge_3.png") End Sub 

如果只是你想添加在一个word文档中的图像,然后使用这个,

  Sub FillABookmark(bookmarkname As String, imagepath As String) Dim objWord As Object Dim objDoc As Object On Error Resume Next Set objWord = GetObject(, "Word.Application") If objWord Is Nothing Then Set objWord = CreateObject("Word.Application") objWord.Visible = True objWord.Documents.Open "D:\imran.docx" End If Set objDoc = objWord.activedocument With objDoc .Bookmarks(bookmarkname).Select .Shapes.AddPicture Filename:=imagepath End With With objDoc .Bookmarks(bookmarkname).Select .Shapes.AddPicture Filename:=imagepath End With With objDoc .Bookmarks(bookmarkname).Select .Shapes.AddPicture Filename:=imagepath End With End Sub Sub InsertScreenshots() Call FillABookmark("test", "C:\Users\Public\Documents\1.jpg") End Sub