【问题标题】:Powerpoint VBA dont close ExcelPowerpoint VBA 不关闭 Excel
【发布时间】:2017-03-29 19:18:43
【问题描述】:

我在 Powerpoint 中的 VBA 代码不会“杀死”我的 Excel 应用程序。 如果我查看任务管理器,它仍然会运行。

我想以正确的方式关闭它而不是杀死它。

谁能帮帮我?我已经搜索并试图让它工作,但没有运气。

Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
If Wn.View.CurrentShowPosition = 2 Then

    Dim xlApp As Object
    Dim xlWorkBook As Object

    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = False
    Set xlWorkBook = xlApp.Workbooks.Open("D:\ELE_powerpoint\book1.xlsx", True, False)

    With xlWorkBook.ActiveSheet
    txt1 = xlWorkBook.sheets(1).Range("A2")
    txt2 = xlWorkBook.sheets(1).Range("A3")
    txt3 = xlWorkBook.sheets(1).Range("A4")
    End With

    ActivePresentation.Slides(2).Shapes("a2").TextFrame.TextRange = txt1
    ActivePresentation.Slides(2).Shapes("a3").TextFrame.TextRange = txt2
    ActivePresentation.Slides(2).Shapes("a4").TextFrame.TextRange = txt3

    Set xlApp = Nothing
    Set xlWorkBook = Nothing

End If
End Sub

【问题讨论】:

  • xlApp.Quit 会做到的

标签: vba excel powerpoint


【解决方案1】:

Set xlApp = Nothing 之前尝试xlApp.Quit

【讨论】:

    【解决方案2】:
    Set xlApp = Nothing
    

    该指令将xlApp 对象引用设置为Nothing。它不会破坏它所引用的对象,但它会阻止进一步的代码使用 that 引用。

    Excel 是一个相当复杂的应用程序;创建Excel.Application 对象的实例有很多含义,为了正确关闭自身,它需要运行一定的指令序列(卸载 Excel 和 COM 加载项,关闭任何打开的文件,拆除 VBE如果它已被初始化——这反过来可能需要拆除它自己的加载项等)——通过将你的引用设置为Nothing,你说“我不再需要它了”——但是 COM 添加- 仍在使用它的插件?那个仍然打开的工作簿是一个带有 Application 属性的 Workbook 对象,它还引用了您所引用的同一个对象 - 这些引用还没有消失!

    正如TimTom所说,你需要调用Excel.Application实例的Quit方法,这样它才能自己清理。

    如果这是你的代码做的最后一件事,那么你可能甚至不需要Set xlApp = Nothing,因为 VBA 运行时会知道它不需要在它结束后保留​​xlApp 引用范围; Set xlWorkbook = Nothing 也是多余的。

    退出 Excel 将关闭您打开的未修改工作簿,但由于 打开了它,我认为最好自己关闭它 - 只需在调用 @ 之前调用 xlWorkbook.Close 987654336@.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2013-03-15
      相关资源
      最近更新 更多