我有以下代码通过VB.NET 2013 Express在powerpoint文件中运行宏:
'Start PowerPoint and open the presentation.
Dim oPP = New Microsoft.Office.Interop.PowerPoint.Application()
oPP.Visible = MsoTriState.msoTrue
Dim oPresSet = oPP.Presentations
Dim oPres = oPresSet.Open(PFile)
oPP.Run("'Plan.ppt'!UpdatePlan")
oPres = Nothing
If Not oPresSet Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(oPresSet)
oPresSet = Nothing
End If
oPP.Quit()
If Not oPP Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(oPP)
oPP = Nothing
End If
我打开powerpoint以查看,然后通过powerpoint关闭文件。当这段代码再次运行代码时,我得到以下错误,代码如下:
Dim oPP = New Microsoft.Office.Interop.PowerPoint.Application()
错误消息 - “Plan.exe中发生了'System.Runtime.InteropServices.COMException'类型的未处理异常
其他信息:由于以下错误,从IClassFactory创建具有CLSID {91493441-5A91-11CF-8700-00AA0060263B}的COM组件实例失败:800706b5。“
有没有办法在通过powerpoint关闭powerpoint文件时释放对象,以便我可以重新运行代码而不会出错?
有没有其他方法可以做到这一点,以免我收到这些错误?
多年来一直在努力工作,非常感谢帮助。感谢。
答案 0 :(得分:0)
要释放对象,请运行以下子目录:
''' <summary>
''' This releases the object
''' </summary>
''' <remarks></remarks>
Sub ReleaseObj()
_pptApp.Quit()
_pptApp = Nothing
_pptPre = Nothing
End Sub
要获取更多信息,请查看Hans Passant的回答以及this question中的链接。