我有一个依赖读取、附加和创建文本文件的 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 textfile
到 Open 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/