2015-04-16 2 views
1

В настоящее время я пытаюсь автоматизировать способ преобразования слайда PowerPoint в изображение, которое затем я могу использовать в своем приложении. У меня есть методы вниз, используя Powerpoint надстройки:Преобразование файла точки питания (ppt) в файл

Private Function convert_slide(ByVal targetfile As String, ByVal imagepath As String, ByVal slide_index As Integer) 
    Dim pptapplication As New Microsoft.Office.Interop.PowerPoint.Application 
    Dim prsPres As Microsoft.Office.Interop.PowerPoint.Presentation = pptapplication.Presentations.Open(targetFile, True, False, False) 
    prsPres.Slides(slide_index).Export(imagepath, "jpg", 0, 0) 
    prsPres.Close() 
    pptapplication.Quit() 


    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(prsPres) 
    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(pptapplication) 

    Return Image.FromFile(imagepath) 

End Function 

Теперь это работает для одного файла, но если я пытаюсь запустить функцию снова говорит о том, что путь назначения находится в использовании. Кажется, что точка питания блокирует файл. Я не хочу менять имена файлов каждый раз, когда он запускается. Я хотел бы повторно использовать этот временный файл каждый раз. Любые идеи, как сделать так, чтобы файл не заблокировался?

enter image description here

ответ

0

Это объект Com. Вам нужно распорядиться им.

Private Function convert_slide(ByVal targetfile As String, ByVal imagepath As String, ByVal slide_index As Integer) As Image 
    Dim pptapplication As New Microsoft.Office.Interop.PowerPoint.Application 
    Dim prsPres As Microsoft.Office.Interop.PowerPoint.Presentation = pptapplication.Presentations.Open(targetFile, True, False, False) 
    prsPres.Slides(slide_index).Export(imagepath, "jpg", 0, 0) 
    prsPres.Close() 
    pptapplication.Quit() 
    Microsoft.Office.InteropMarshal.FinalReleaseComObject(prsPres) 
    Microsoft.Office.InteropMarshal.FinalReleaseComObject(pptapplication) 
    Return Image.FromFile(imagepath) 

End Function 
+0

Я добавил линии вытеснения, но все тот же вопрос. Я обновил свой вопрос, чтобы отразить это сейчас. –

+0

Имеет ли переменная приложения метод Exit/Quit? Если так, вызовите его перед удалением. – OneFineDay

+0

Я вызвал pptapplication.Quit(), но все равно такую ​​же заблокированную ошибку файла. –

Смежные вопросы