Jump to content
Software FX Community

Re: How to export a graph into PowerPoint from VB application

User (Legacy)

Recommended Posts


Set a reference to PowerPoint in your project. Here's some code from the automation help file.

Auto2000.exe is available from the Ms Support/ Download section. Following this is

some code I wrote to assemble and print 4 pictures per page/slide for my kid's school.

It loads an array with all the names of the jpgs in a directory then puts (and sizes) 4 slides per page and prints.

Use what's usefull to you.


Sub CreateGraphicOnSlide()

Dim ppApp As PowerPoint.Application

Dim ppPres As PowerPoint.Presentation

Dim ppShape As PowerPoint.Shape

Dim ppCurrentSlide As PowerPoint.Slide

Set ppApp = CreateObject("PowerPoint.Application")

ppApp.Visible = True

Set ppPres = ppApp.Presentations.Add(msoTrue)

Set ppCurrentSlide = ppPres.Slides.Add(Index:=1, Layout:=ppLayoutText)

With ppCurrentSlide

'Add the ChartFX graphic

Set ppShape = .Shapes.AddPicture("c:\My Documents\Test.jpg", _

msoFalse, msoCTrue, 300, 300, 100, 100)

'Send the graphic to back so we can see any

'text frames that may be behind

ppShape.ZOrder msoSendToBack

'Why not add a couple of text frames?

'Set the text of the text frames on the slide

.Shapes(1).TextFrame.TextRange.Text = "PowerPoint Programmability"

.Shapes(2).TextFrame.TextRange.Text = "Sixteen Point Star"

'Bring the text frames to the front, so the

'graphic doesn't hide them

.Shapes(1).ZOrder msoBringToFront

.Shapes(2).ZOrder msoBringToFront

'Add the 16 point star graphic shape

Set ppShape = .Shapes.AddShape( _

Type:=msoShape16pointStar, _

left:=300, _

top:=300, _

Width:=100, _


ppShape.Fill.PresetTextured msoTextureWovenMat

'Send the graphic to back so we can see the

'text frames

ppShape.ZOrder msoSendToBack

End With

'Save the presentation and exit Microsoft PowerPoint

ppPres.SaveAs "c:\My Documents\pptExample2", ppSaveAsPresentation


Set ppApp = Nothing

End Sub

Sub cmdAssemble_Click()

'to print 4 slides per page

'set some variables

On Error GoTo err_Sub

Dim Ppt As PowerPoint.Application

Dim Pres As PowerPoint.Presentation

Dim oPicture As PowerPoint.Shape

Dim oSlide As PowerPoint.Slide

Dim dblVar As Double

Dim i As Long

Dim s As Long

Dim sf As Single

Dim sglWidth As Single

Dim sglHeight As Single

Dim strInbox As String

Dim strOutbox As String

Dim strSlideShow As String

Dim strCurrentFile As String

Dim FileArray(1 To 4) As Variant

Dim intPrint As Integer

'path statements

strInbox = "c:\Inbox\"

strOutbox = "c:\Completed\"

strSlideShow = "c:\Slideshow\"

'load filearray

strCurrentFile = Dir(strInbox & "*.jp*")

i = 1

If strCurrentFile <> "" Then

FileArray(i) = strCurrentFile


MsgBox "No Images to process in the directory: " & strInbox, vbCritical, "Nothing to Do!"

GoTo exit_Oops 'bomb out

End If


'MsgBox FileArray(i)

strCurrentFile = Dir

If strCurrentFile <> "" Then

i = i + 1

If i > 4 Then

Exit Do 'only 4 slides per page

End If

FileArray(i) = strCurrentFile


Exit Do

End If


'check to see if we have 4 slides

If i < 4 Then

intPrint = MsgBox("There are only " & i & " slides ready to go." & vbCrLf & vbCrLf & "Do you want to print now?", vbQuestion + vbOKCancel + vbDefaultButton2, "Print?")

If intPrint = 2 Then

MsgBox "Print cancelled", vbInformation, "Cancelled"

GoTo exit_Oops

End If

End If

On Error Resume Next

' Attempt to reference PowerPoint which might be running.

Set Ppt = GetObject(, "PowerPoint.Application")

'If Ppt is Nothing, PowerPoint is not running.

If Ppt Is Nothing Then

'Create a new instance of the PowerPoint application.

Set Ppt = CreateObject("PowerPoint.Application")

'If true, MS PowerPoint is not installed.

If Ppt Is Nothing Then

MsgBox "MS PowerPoint is not installed on your computer"

End If

End If

'erase this line later

Ppt.Visible = msoTrue

Ppt.WindowState = ppWindowMaximized

'reset error handler

On Error GoTo err_Sub

'check to see if there is an open presentation

If Ppt.Presentations.Count <> 0 Then


End If

'open a presentation

Set Pres = Ppt.Presentations.Add

With Pres.PageSetup

.SlideSize = ppSlideSizeCustom

.SlideWidth = 756

.SlideHeight = 576

.FirstSlideNumber = 1

.SlideOrientation = msoOrientationHorizontal

End With

s = 1 'variable for picture counter start at 1

'Add Slide

Set oSlide = Pres.Slides.Add(s, ppLayoutBlank)


'4 slides per page

If s > 4 Then

Exit Do

End If

'check for valid filename in array

If FileArray(s) = "" Then

Exit Do

End If

'Adding pictures

Select Case s

Case 1

'Add Picture

oSlide.Shapes.AddPicture strInbox & FileArray(s), _

msoTrue, msoFalse, 31, 5, 346, 264

Case 2

'Add Picture

oSlide.Shapes.AddPicture strInbox & FileArray(s), _

msoTrue, msoFalse, 410, 5, 346, 264

Case 3

'Add Picture

oSlide.Shapes.AddPicture strInbox & FileArray(s), _

msoTrue, msoFalse, 31, 310, 346, 264

Case 4

'Add Picture

oSlide.Shapes.AddPicture strInbox & FileArray(s), _

msoTrue, msoFalse, 410, 310, 346, 264

End Select

'increment picture counter and do it again

s = s + 1


exit_Point: 'regular exit point with some printing and cleanup

'print the slide when done



'Windows 9x specific

'wait until the presentation starts to print

Do While Dir("C:\WINDOWS\SPOOL\PRINTERS\*.spl") = ""



'now loop until spool file is off the local disk

Do While Dir("C:\WINDOWS\SPOOL\PRINTERS\*.spl") <> ""



'close presentation


'close powerpoint


'move files to y:\slideshow and z:\completed

For i = 1 To 4

If FileArray(i) = "" Then

Exit For

End If

'copy file to "completed"

FileCopy strInbox & FileArray(i), strOutbox & FileArray(i)

'copy file to "slideshow"

FileCopy strInbox & FileArray(i), strSlideShow & FileArray(i)

'KILL inbox copy

Kill strInbox & FileArray(i)


'show we're done

MsgBox "We're done!", vbInformation, "Next!"

exit_Oops: 'exit here if we didn't want to print

'release variables

Set oPicture = Nothing

Set oSlide = Nothing

Set Pres = Nothing

Set Ppt = Nothing


Exit Sub


Select Case Err.Number

Case Else

MsgBox "Unanticipated error: " & Err.Number & " " & Err.Description



End Select

End Sub

Johannes Appelo <jappelo@intekom.co.za> wrote in message news:tiW8SP0$AHA.952@sfxserver.softwarefx.com...

> Hi,


> I am trying to export a ChartFX chart generated via a VB application into a

> PowerPoint presentation. I do not have any ideas where to start, can anybody

> point me into the right direction or refer me to reading material?


> Thanks - Hans Appelo



Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...