Solved

Error exporting Slides from PowerPoint using VB.net

Posted on 2009-04-07
6
500 Views
Last Modified: 2012-05-06
For some reason PowerPoint has started crashing with the following code but has been working for over a year. Any ideas?
Dim DestFile As String = "c:\temp\"
 

        If Not IO.Directory.Exists(DestFile) Then

            IO.Directory.CreateDirectory(DestFile)

        End If
 
 

        Dim objApp As New PowerPointMe.Application
 
 
 

        objApp.Visible = MsoTriState.msoTrue

        objApp.Presentations.Open(FileStr, MsoTriState.msoFalse, MsoTriState.msoCTrue, MsoTriState.msoCTrue)

        objApp.Assistant.On = False
 

        objApp.Presentations(1).SaveAs(DestFile & "Benefit_" & BenefitID & ".bmp", Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsBMP, MsoTriState.msoCTrue)
 

        Dim PresentationByte() As Byte = Nothing

        Dim FileArray(objApp.Presentations(1).Slides.Count - 1) As Object

        Dim i As Integer = 1
 

        For i = 1 To objApp.Presentations(1).Slides.Count

            Dim SlideFileStr As String = DestFile & "Benefit_" & BenefitID & "\Slide" & i & ".bmp"
 

            Dim FS As IO.FileStream = IO.File.Open(SlideFileStr, IO.FileMode.Open)

            ReDim PresentationByte(FS.Length - 1)

            FS.Read(PresentationByte, 0, FS.Length - 1)
 

            FS.Close()
 

            'Save File into array, the array will be saved to the db and pulled back out on the client

            FileArray(i - 1) = PresentationByte
 

        Next
 

        Try

            objApp.ActiveWindow.Close()

        Catch
 

        End Try

        Try

            If objApp.Presentations.Count > 0 Then

                objApp.Presentations(1).Close()

            End If

        Catch ex As Exception

            If Debugger.IsAttached Then Stop

        End Try

        Try

            objApp.Quit()

        Catch ex As Exception

            If Debugger.IsAttached Then Stop

        End Try
 
 

        GC.Collect()
 

        Return ConvertObjectToBytes(FileArray)

Open in new window

0
Comment
Question by:jmarbutt
  • 4
6 Comments
 
LVL 21

Accepted Solution

by:
GlennaShaw earned 250 total points
ID: 24089076
Did you upgrade to 2007?
I'm not that good with VB, so I suggest you'll get a quicker answer here:
https://www.microsoft.com/office/community/en-us/default.mspx?dg=microsoft.public.powerpoint&lang=en&cr=US
However, make sure you specify which version of PowerPoint you're using and exactly what you're trying to do (are you exporting the images into a database?)
0
 
LVL 59

Assisted Solution

by:Chris Bottomley
Chris Bottomley earned 250 total points
ID: 24089413
I'm not that aware of .net but as Glenna pointed out a change in version could explain teh sudden change.

Which line is failing and with what error code ... we may be able to rationalise it out.

Chris
0
 
LVL 2

Author Comment

by:jmarbutt
ID: 24090671
Yes it is 2007 but we have been using it a while with out a problem.

It is throwing an error in the when we start to exit the function, it is almost like it doesn't want to let go of the reference and/or the GC is not disposing it correctly.
0
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 
LVL 2

Author Comment

by:jmarbutt
ID: 24090924
The error I get is:


ContextSwitchDeadlock was detected

Message: The CLR has been unable to transition from COM context 0x1bc5bbd0 to COM context 0x1bc5be20 for 60 seconds. The thread that owns the destination context/apartment is most likely either doing a non pumping wait or processing a very long running operation without pumping Windows messages. This situation generally has a negative performance impact and may even lead to the application becoming non responsive or memory usage accumulating continually over time. To avoid this problem, all single threaded apartment (STA) threads should use pumping wait primitives (such as CoWaitForMultipleHandles) and routinely pump messages during long running operations.

Open in new window

0
 
LVL 2

Author Closing Comment

by:jmarbutt
ID: 31567554
This actually ended up being something completely different. Thanks for your help, I still rewarded the points
0
 
LVL 2

Author Comment

by:jmarbutt
ID: 24091459
There was another section of my code that was actually throwing the problem, basically the SQL command was timing out only on certain powerpoints. So not even a valid question
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How do ASP.NET and MVC work together? 4 30
ADO.NET ENTITY DATA MODEL 3 32
Error on link 14 40
Excel 2016 formulas 5 31
No matter the version of Windows you are using, you may have some problems with Windows Search running too slow or possibly not running at all. Before jumping into how you can solve this issue, just know there are many other viable alternative deskt…
In this article we discuss how to recover the missing Outlook 2011 for Mac data like Emails and Contacts manually.
This video shows the viewer how to set up and create Footnotes in their document. Click on the References tab: Select "Insert Footnote": Type in desired text:
The view will learn how to download and install SIMTOOLS and FORMLIST into Excel, how to use SIMTOOLS to generate a Monte Carlo simulation of 30 sales calls, and how to calculate the conditional probability based on the results of the Monte Carlo …

864 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

22 Experts available now in Live!

Get 1:1 Help Now