Solved

How can I insert and position a picture directly above a book mark in MS Word 2010 using VBA

Posted on 2013-01-16
5
809 Views
Last Modified: 2013-01-20
I had an amazing macro in MS word vba that inserted pictures right ontop of bookmarked words that worked with word 2003 but is erring the *@! out in 2010 Ive been googling away appears there is some bug in 2010 here is my code that used to work

Selection.GoTo what:=wdGoToBookmark, name:=bmname
With Selection.InlineShapes
Mypicture = .AddPicture(picfile, LinkToFile:=False, SaveWithDocument:=True)

Set myFloatPic = Mypicture.ConvertToShape
 
  With myFloatPic
.Anchor = ActiveDocument.BookMarks(bmname).Range
  .Top = .Top + mTop
  .Height = mHeight
  .Width = mWidth
0
Comment
Question by:Dov_B
  • 3
  • 2
5 Comments
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 38785218
What  *@!     ?
0
 

Author Comment

by:Dov_B
ID: 38785244
Sorry that just replaces the expletives I wanted to use when saying that my trust macro erred out just because I shelled out some major bucks to buy office 2010
0
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 38785264
Then, I'm sorry. I don't really understand the question.

If you have some code that stops on an error, can you indicate the code line and give the error text  and number?
0
 

Author Comment

by:Dov_B
ID: 38785280
run-time error '-2147467259 (80004005)':
Method 'AddPicture' of object 'InlineShapes' failed
0
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 500 total points
ID: 38786746
This works for me:
Set rng = ActiveDocument.Bookmarks(bmname).Range

With ActiveDocument.InlineShapes
    Set Mypicture = .AddPicture(picfile, LinkToFile:=False, SaveWithDocument:=True, Range:=rng)
End With

ActiveDocument.Bookmarks.Add bmname, rng 're-add overwritten bookmark
Set myFloatPic = Mypicture.ConvertToShape
With myFloatPic
    '.Anchor = ActiveDocument.Bookmarks(bmname).Range 'This is unnecessary. Also it deletes the picture
    .Width = mWidth
    .Top = .Top + mTop
    .Height = mHeight
End With

Open in new window


But you can add the picture as a Shape, so it doesn't have to be converted:
With ActiveDocument.Shapes
    Set myFloatPic = .AddPicture(picfile, LinkToFile:=False, SaveWithDocument:=True, Anchor:=bmname.Range)
End With
With myFloatPic
    .Width = mWidth
    .Top = .Top + mTop
    .Height = mHeight
End With

Open in new window

0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

When creating Microsoft Word-based forms there may be a need to have a form field repeated throughout the whole document. For instance, with a company name, you may want this information repeated automatically throughout the document rather than man…
The Selection object is designed for user interaction. It has a Range property, so it can be used in most places that a Range object can. Recorded macros must use the Selection because they are simply copying what the user is doing. A Range prope…
This video walks the viewer through the process of creating an MLA formatted document, as well as a bibliography with citations.
In a previous video Micro Tutorial here at Experts Exchange (http://www.experts-exchange.com/videos/1358/How-to-get-a-free-trial-of-Office-365-with-the-Office-2016-desktop-applications.html), I explained how to get a free, one-month trial of Office …

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now