PPT2000: Macro to Embed Linked Images into Presentation

ID: Q241378


The information in this article applies to:
  • Microsoft PowerPoint 2000


SUMMARY

PowerPoint does not provide a direct method to break links made to pictures other than by cutting and pasting the image back on to the slide. This article contains sample macro code that automates this process of reinserting the linked pictures as embedded pictures.


MORE INFORMATION

NOTE: The following macro examples only work from within the PowerPoint application. Visual Basic for Applications macros are not supported by the Microsoft PowerPoint Viewer. For additional information, please see the following article in the Microsoft Knowledge Base:

Q230746 PPT: Viewer: Presentation Macros Don't Run Within the Viewer
Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Solution Provider or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Solution Providers, please see the following page on the World Wide Web:

http://www.microsoft.com/mcsp/
For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

http://www.microsoft.com/support/supportnet/overview/overview.asp
The following macro checks each slide for linked images. If it finds a linked image, the macro then gets the location and file name for the original image, and gets the size, position, and z-order of the image on the slide. It then deletes the current image, and embeds the picture in the exact same position and size. It then repeats the search.

NOTE: You must run this macro on the computer that has access to the linked picture files. If you do not, the macro cannot embed the images into the presentation.

Sub UnlinkPicture()
   ' Enable the error handler.
   '
   On Error GoTo ErrorHandler
   
   Dim oSlide As Slide
   Dim oShape As Shape
   Dim strPath As String
   Dim fHt As Single
   Dim fWd As Single
   Dim fTop As Single
   Dim fLeft As Single
   Dim fOrder As Single
   Dim lIndex As Long
   
   ' Check to see if the presentation is in the correct view.
   ' Raise the custom error message 555.
   '
   If ActiveWindow.ViewType <> ppViewNormal And ActiveWindow.ViewType _
        <> ppViewSlide Then
      Err.Raise 555, "Unlink Picture Macro", _
        "Not in Slide View or Normal View"
   End If

   ' Check to see if the presentation has no slides.
   ' Raise the custom error message 556.
   '
   If ActivePresentation.Slides.Count = 0 Then
      Err.Raise 556, "Unlink Picture Macro", _
        "Presentation contains no slides"
   End If

   ' Loop through each slide in the presentation.
   '
   For Each oSlide In ActivePresentation.Slides
      
   ' On the current slide, find those pictures that are
   ' linked, and get the positon, size, layer, and name
   ' of the image. Then delete it from the slide.
   '
      With oSlide
         For Each oShape In .Shapes
            If oShape.Type = msoLinkedPicture Then
               strPath = oShape.LinkFormat.SourceFullName
               fHt = oShape.Height
               fWd = oShape.Width
               fTop = oShape.Top
               fLeft = oShape.Left
               fOrder = oShape.ZOrderPosition
               oShape.Delete
         
   ' Create a new picture from the same file, and original settings.
   '
               Set oShape = _
      .Shapes.AddPicture(strPath, msoFalse, msoTrue, fLeft, fTop, fWd, fHt)
               
   ' Reposition the image back to its orginal Zorder layer.
   '
               While oShape.ZOrderPosition > fOrder
                  oShape.ZOrder msoSendBackward
               Wend
   
            End If
         Next oShape
      End With
   Next oSlide
   Exit Sub
ErrorHandler:
   ' Create Error message and raise dialog box with error message.
   '
   ErrMsg = "Error " & Err.Number & ": " & Err.Source & vbNewLine _
     & Err.Description
   MsgBox ErrMsg, vbCritical, "Error Message"

End Sub 


REFERENCES

For more information about using the sample code in this article, click the article number below to view the article in the Microsoft Knowledge Base:

Q212536 OFF2000: How to Run Sample Code from Knowledge Base Articles

Additional query words: picture break graphic jpg gif bmp tif

Keywords : kbdta KbVBA
Version : WINDOWS:2000
Platform : WINDOWS
Issue type : kbinfo


Last Reviewed: November 27, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.