尝试删除Excel文件,文件无法关闭

时间:2019-10-18 14:35:12

标签: excel vba

我当前正在编写一个程序,在该程序中,我将一个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':权限被拒绝

任何帮助将不胜感激。我已经有一段时间没有编写VBA脚本了,但是我对更好的方面并不完全熟悉。

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

EDIT2:有趣的是我解决了我的问题。我想通过VB脚本在excel之外运行该程序,而我尝试通过该程序运行它,而以前没有打开excel。然后,它正常工作,所有内容都会正确删除。不想让任何人遇到同样的问题。

1 个答案:

答案 0 :(得分:0)

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

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。   有一个错误...