1 Reply Latest reply: Jan 20, 2014 5:06 PM by jean-marc GOUPIL RSS

    Select a particular slide in powerpoint (export via macro)

      Hello,

      I am trying to export existing graph on a powerpoint slide to update it. Basically, it means that I need to SELECT a already existing slide in the PPT; Unfortunatly, I cannot find the way to so, as all script/example I am refering to are dealing with:

      Set PPSlide = PPPres.Slides.Add(1, 1)

       

      Where I'd rather have to use sthg like:

      ' found in Slide.Select Method (PowerPoint)

      Set PPSlide = PPPres.Slides(4).Select 'to go to Slide nb4

       

      Do you see a a way to do so ?

       

      Thanks for your help!

       

       

      Here is the function I am using:

       

      FUNCTION ajout_slide(PPApp,SheetID,ObjectID,SlideNB,marginX,marginY,sizeX,sizeY,ppt_doc,qvw_file)

       

        ActiveDocument.ActivateSheet SheetID

        ActiveDocument.GetAPplication.WaitForIdle

        ActiveDocument.GetSheetObject(ObjectID).CopyBitmapToClipboard

       

      'msgbox("Copy:"&vbcrlf&"SheetID: "&SheetID&vbcrlf&"Object: "&ObjectID&vbcrlf&"Slide: "&SlideNB&vbcrlf&"MarginX: "&marginX&vbcrlf&"MarginY: "&marginY&vbcrlf&"sizeX: "&sizeX&vbcrlf&"sizeY: "&sizeY&vbcrlf&"PPT file: "&ppt_doc&vbcrlf&"Qlikview file: "&qvw_file)

      'exit function

       

        Set PPApp = CreateObject("Powerpoint.Application")

        PPApp.Visible = True

        vPPTTemplatePath = ppt_doc

        Set PPPres = PPApp.Presentations.Open(vPPTTemplatePath, 0) ' -1 = read only

       

         ' ------------------------------------------------------------------------------------------------------

         ' Should select HERE slide nb <SlideNB> instead of creating one!

         Set PPSlide = PPPres.Slides.Add(1, 1)

         ' ------------------------------------------------------------------------------------------------------

       

        PPSlide.Shapes.Paste

        if(marginX<>0) then PPSlide.Shapes(PPSlide.Shapes.Count).Left = marginX

        if(marginY<>0) then PPSlide.Shapes(PPSlide.Shapes.Count).Top = marginY

        if(sizeX<>0) then PPSlide.Shapes(PPSlide.Shapes.Count).Width = sizeX end if

        if(sizeY<>0) then PPSlide.Shapes(PPSlide.Shapes.Count).Height = sizeY end if

        PPSlide.Shapes(PPSlide.Shapes.Count).PictureFormat.TransparentBackground = msoTrue

        PPSlide.Shapes(PPSlide.Shapes.Count).PictureFormat.TransparencyColor = RGB(255, 255, 255)

        PPSlide.Shapes(PPSlide.Shapes.Count).Fill.Visible = msoFalse

       

       

        PPPres.SaveAs ppt_doc

        PPPres.Close

        PPApp.Quit

        

        Set PPSlide = Nothing

        Set PPPres = Nothing

        Set PPApp = Nothing

        'PPApp.Visible = False

       

      END FUNCTION