首页 > 解决方案 > 关闭文件后终止在后台保持打开状态的 Excel 进程

问题描述

我正在编写一个程序,在其中打开一个 Excel 文件并将其迁移到另一个主文件中。之后我想删除它。当我尝试删除文件时,出现权限被拒绝错误。

在网上研究后,我确实看到我犯了一些错误,然后确保正确关闭文件并销毁相关对象,但我仍然收到错误消息。

Sub Test()
    Dim app as New Excel.Application
    Dim wb as Workbook
    Set wb.app.Workbooks.Open(FILEPATH & "\filename.csv") 
    'I know the filepath is correct as I can open and manipulate the file

    '... Do things

    wb.close
    Set wb = Nothing
    kill FILEPATH & "\filename.csv"
    'I plan on adding error handling once the basic function works
End Sub

运行时错误“70”:权限被拒绝

编辑:在玩过调试之后,我可以说我可以成功销毁对象,但是 Excel 进程在后台保持打开状态,我必须在任务管理器中手动杀死它才能使代码正常工作。

EDIT2:我解决了我的问题。我想通过 VB 脚本在 Excel 之外运行这个程序。我运行它,之前没有打开 Excel。一切都正确删除。

标签: excelvba

解决方案


这是您的代码示例,对我来说效果很好:

Sub Test()
Dim app As New Excel.Application
Dim wb As Workbook
Dim path As String
path = "your path"

Set wb = app.Workbooks.Open(path & "\dati.xlsx")
'I know the filepath is correct as I can open and manipulate the file

'... Do things
wb.Sheets(1).Range("A1:E20").Copy
ThisWorkbook.Worksheets("Sheet1").Range("A10").PasteSpecial xlPasteValues

wb.Close

Set wb = Nothing

Kill path & "\dati.xlsx"
'I plan on adding error handling once the basic function works
End Sub

我创建了文件 dati.xlsx。我从 sheet1(文件 data.xlsx)复制范围 A1:E20 并将数据粘贴到 sheet1(宏在哪里)。结果是数据并删除文件data.xlsx

编写 Set wb.app 时在您的邮政编码中支付 Attantion .... 有一个错误...


推荐阅读