Object Variable Not Set

I have a form that opens a powerpoint file after selecting "Get Presentation 1" button.  Then when you're done you take a quiz and go to "Get Presentation 2" button.  ("Get Presentation 2" button opens another form).  Everything works fine up to this point.  After "Get Presentation 2" opens the vba code doesn't recognize the buttons for "First Slide", "Next Slide", etc etc.  I get the error "Object variable or With block variable not set".  The error occurs on the "mcolSlideIDs." verbiage.  I have also attached the zip access file.  Also, If there are any suggestions of a better way to ask/store questions/answers to powerpoint slides I'd love to hear them (because I think this is going to be a little slow).
Option Explicit
Option Compare Database

' Initialize variables.
Private mcolSlideIDs As Collection
Private mlngSlideIndex As Long

Private Sub SetSlide(ByVal ID As Integer)
    On Error GoTo ErrorHandler
    
    ' Open PowerPoint
    Dim strPowerPointFile As String
    Dim pptobj As PowerPoint.Application
    Set pptobj = New PowerPoint.Application
    pptobj.Visible = True
    pptobj.WindowState = ppWindowMinimized
    
'Message here to wait
    Form_frmWait.Visible = True
    
    strPowerPointFile = CurrentProject.Path & "\Forecasting2.ppt"
    
    'With strPowerPointFile.Visible = True
    '    Set mcolSlideIDs = New Collection
    '    Dim ppSlide As PowerPoint.Slide
    '    For Each ppSlide In .Slides
    '        mcolSlideIDs.Add ppSlide.SlideID
    '    Next
    '    .Close
    'End With
'*****
     ' Close PowerPoint
    pptobj.Quit
    Set pptobj = Nothing
    
    ' Make object frame visible and enable "navigation" buttons.
    insertShow.Visible = True
    pptFrame.Visible = True
    frstSlide.Enabled = True
    lastSlide.Enabled = True
    nextSlide.Enabled = True
    previousSlide.Enabled = True
    cmdForecastingQuiz1.Enabled = True
    'cmdClose.Enabled = True
    cmdForecastingPresentationPart3.Enabled = True
Form_frmWait.Visible = False

    ' Specify OLE Class, Type, SourceDoc, SourceItem and other properties.
    With pptFrame
        .Class = "Microsoft Powerpoint Slide"
        .OLETypeAllowed = acOLELinked
        .SourceDoc = strPowerPointFile
    End With
    SetSlide 1
    
    frstSlide.SetFocus
    insertShow.Enabled = False
    
    
     With strPowerPointFile.Visible = True
        Set mcolSlideIDs = New Collection
        Dim ppSlide As PowerPoint.Slide
        For Each ppSlide In .Slides
            mcolSlideIDs.Add ppSlide.SlideID
        Next
        .Close
    End With
   
    Exit Sub
'*****
    Select Case ID
    Case Is > mcolSlideIDs.Count
        MsgBox "This is the last slide."
    Case 0
        MsgBox "This is the first slide."
    Case Else
        mlngSlideIndex = ID
        With pptFrame
            .SourceItem = mcolSlideIDs(mlngSlideIndex)
            .Action = acOLECreateLink
        End With
    End Select

    Exit Sub
ErrorHandler:
    MsgBox Err.Number & " " & Err.Description
    Exit Sub
End Sub

Private Sub frstSlide_Click()
    SetSlide 1
End Sub
Private Sub lastSlide_Click()
    SetSlide mcolSlideIDs.Count
End Sub

Private Sub nextSlide_Click()
    SetSlide mlngSlideIndex + 1
End Sub

Private Sub previousSlide_Click()
    SetSlide mlngSlideIndex - 1
End Sub

Private Sub cmdForecastingQuiz2_Click()
On Error GoTo Err_cmdForecastingQuiz2_Click
    
    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frmForecasting_Q2"
    
    Form_frmForecasting_Q2.Visible = True
          
Exit_cmdForecastingQuiz2_Click:
    Exit Sub

Err_cmdForecastingQuiz2_Click:
    MsgBox Err.Description
    Resume Exit_cmdForecastingQuiz2_Click
    
End Sub

Private Sub cmdClose_Click()
On Error GoTo Err_cmdClose_Click


    DoCmd.Close
    DoCmd.Close
Exit_cmdClose_Click:
    Exit Sub

Err_cmdClose_Click:
    MsgBox Err.Description
    Resume Exit_cmdClose_Click
    
End Sub
Private Sub cmdForecastingPresentationPart3_Click()
On Error GoTo Err_cmdForecastingPresentationPart3_Click
    
    Dim stDocName As String
    Dim stLinkCriteria As String
    Dim strPowerPointFile As String
    Dim pptobj As PowerPoint.Application
    
    
    stDocName = "Form_frmForecastingPresentation3"
        
    Form_frmForecastingPresentation3.Visible = True
    Form_frmForecastingPresentation2.Visible = False
    
        ' Open PowerPoint

    Set pptobj = New PowerPoint.Application
    pptobj.Visible = True
    pptobj.WindowState = ppWindowMinimized
    
'Message here to wait
    Form_frmWait.Visible = True
    
    strPowerPointFile = CurrentProject.Path & "\Forecasting3.ppt"
    
    ' Fill a collection with all Slide IDs.
    With pptobj.Presentations.Open(strPowerPointFile)
        Set mcolSlideIDs = New Collection
        Dim ppSlide As PowerPoint.Slide
        For Each ppSlide In .Slides
            mcolSlideIDs.Add ppSlide.SlideID
        Next
        .Close
    End With
    
    ' Close PowerPoint
    pptobj.Quit
    Set pptobj = Nothing

    ' Make object frame visible and enable "navigation" buttons.
    Form_frmForecastingPresentation3.pptFrame.Visible = True
    Form_frmForecastingPresentation3.frstSlide.Enabled = True
    Form_frmForecastingPresentation3.lastSlide.Enabled = True
    Form_frmForecastingPresentation3.nextSlide.Enabled = True
    Form_frmForecastingPresentation3.previousSlide.Enabled = True
    Form_frmForecastingPresentation3.cmdForecastingQ3a.Enabled = True
    'cmdClose.Enabled = True
    Form_frmForecastingPresentation3.cmdForecastingPresentationPart4.Enabled = True
Form_frmWait.Visible = False
    
    ' Specify OLE Class, Type, SourceDoc, SourceItem and other properties.
    With Form_frmForecastingPresentation3.pptFrame
        .Class = "Microsoft Powerpoint Slide"
        .OLETypeAllowed = acOLELinked
        .SourceDoc = strPowerPointFile
    End With
    SetSlide 1
    
    Form_frmForecastingPresentation3.frstSlide.SetFocus
    cmdForecastingPresentationPart3.Enabled = False
                      
Exit_cmdForecastingPresentationPart3_Click:
    Exit Sub

Err_cmdForecastingPresentationPart3_Click:
    MsgBox Err.Description
    Resume Exit_cmdForecastingPresentationPart3_Click
    
End Sub

Open in new window

Forecasting.zip
BCTITechAsked:
Who is Participating?
 
Jeffrey CoachmanMIS LiasonCommented:
?
I said:
See where you may have forgotten to "SET" the object (not SetFocus)

Jeff
0
 
Rey Obrero (Capricorn1)Commented:
from the VBA window, do a DEBUG>Compile

correct any errors raised
0
 
BCTITechAuthor Commented:
I did that..that's when I get the same message "Object variable or With block variable not set".  
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
Rey Obrero (Capricorn1)Commented:
BCTITech,
there are so many errors in the codes in the form "frmForecastingPresentation2" module.

the codes in your form "frmForecastingPresentation1" works, so just pattern the codes of form frmForecastingPresentation2 in the codes from form "frmForecastingPresentation1"


0
 
BCTITechAuthor Commented:
I'll give it a try...however, form2 has a few different functions to perform than form1.  Thank you for the input.
0
 
Rey Obrero (Capricorn1)Commented:
<.however, form2 has a few different functions to perform than form1>

copy first the code that the function of the form are the same, test the codes.
if working properly, start adding the other functionalities
0
 
Jeffrey CoachmanMIS LiasonCommented:
Basically this error means that you created an Object, but you did not SET it to anything
Ex:
Dim rst as dao.recordset
'SET rst=currentDB.openrecordset ("Sometable")


Or that you declared it, set it, ...but somewhere along the line Unset it (Set SomeObject=Nothing), then tried to use it again.

So check your code for something like this as well.

;-)

JeffCoachman

0
 
BCTITechAuthor Commented:
Thank you....I'll look it over this weekend & see if I can find out where I changed SetFocus.
0
 
Rey Obrero (Capricorn1)Commented:
BCTITech,
test this....
several lines of codes were revised

this does not show the error you are getting..

so you can proceed to whatever you need to add to your application..

if you have any problem not related to the error you posted, just open another thread..
eWFMTraining.mdb
0
 
BCTITechAuthor Commented:
Thanks for the tips!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.