excel - 有时拒绝杀死/删除文件的权限

标签 excel vba delete-file permission-denied

我有一个依赖读取、附加和创建文本文件的 Excel 程序。

自从开始这个项目,每10-100次,我得到一次

"Run-time error '70': Permission denied"

尝试终止/删除文本文件时出错。

如果我继续执行代码,它就可以工作。

我已经对错误代码进行了一些研究,但这并没有太大帮助。

早些时候,我推测文件没有时间关闭,Excel 会尝试终止它。我尝试了一个等待文件关闭的函数,所以除非我的代码不起作用,否则我认为这不是问题所在。

这是我关闭和删除文件的代码。请注意,它是在它停止的“Kill”命令上。 “isFileOpen”和“dir”命令用于检查错误是否是由于 1) 文件尚未关闭,以及 2) 文件尚未删除所致。

Close textfileorg
Close textfileNew
    'Erstatter gammelt reg med nytt reg
Do While isFileOpen(filepathorg): Loop
Kill filepathorg
Do While dir(filepathorg) <> "": Loop

Do While isFileOpen(filepath): Loop
Kill filepath
Do While dir(filepath) <> "": Loop

Name filepathNew As filepathorg

这是我的“文件是否打开”检查:

Function isFileOpen(ByRef filepath As String)

Dim textfile As Integer
textfile = FreeFile

On Error GoTo fileOpenErr

    'Forsøker å åpne fil
Open filepath For Random As textfile
Close textfile

    'Om ok, returner at fil ikke er åpen
isFileOpen = False

Exit Function

    'Ved error, returner at fil var åpen
fileOpenErr:
    isFileOpen = True

End Function

我想这个问题可以通过使用以下代码来避免

failToKillFile:
    application.wait(time)
    resume

我觉得那只是在回避问题。我首先想知道为什么会发生错误。

编辑:正如我发布这篇文章时,我在尝试复制文件时遇到了类似的错误,其中副本必须替换文件。按继续,一切正常。

最佳答案

在代码中更改 Open filepath For Random As textfileOpen filepath For Input Lock Read As textfile

完整代码https://support.microsoft.com/en-us/help/291295/macro-code-to-check-whether-a-file-is-already-open

关于excel - 有时拒绝杀死/删除文件的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47113602/

相关文章:

vba - 通过 VBA 打开和保存受密码保护的网络共享计算机上的文件

Excel - 根据表中另一行的最大值获取值

vba - 如何从 VBA 代码打开 protected 工作簿?

netbeans - 删除远程服务器上的文件

amazon-s3 - 如何从 S3 中删除名称为空的文件

html - 网页导航 点击下一页

数组的工作表函数与代码的 Excel VBA 性能

excel - 如何在 Excel VBA 中退出 1 个以上的 for 循环?

regex - 使用正则表达式检查 Word 宏中的数值

java - 从 SD 卡和 gridview 中删除选定的视频