При попытке удалить файл Excel файл не закроется - PullRequest
0 голосов
/ 18 октября 2019

В настоящее время я пишу программу, в которой я открываю и переносю файл 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: Интересно, ярешил мою проблему. Я хотел запустить эту программу вне Excel с помощью сценария VB, и я попытался запустить ее, не открывая Excel раньше. Это работает тогда, все удаляется правильно. Не хотел оставлять кого-нибудь с такой же проблемой висеть.

1 Ответ

0 голосов
/ 18 октября 2019

Это пример с вашим кодом, и он отлично работает для меня:

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.I. Скопируйте диапазон A1: E20 из sheet1 (файл data.xlsx). и вставьте данные в sheet1 (лист, где находится макрос). В результате вы получите данные и удалите файл data.xlsx

Pay Attantion в свой почтовый индекс при написании Set wb.app .... там есть ошибка ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...