1

我正在为 word 和 excel 编写宏。输出是应保存的生成文件。由于这些文件已经存在并且受到写保护,我不得不以某种方式删除保护。我在 excel 中发现了一个 unprotect 函数,但它并没有真正起作用。我也没有找到任何通过 cmd o0 取消保护的命令

我考虑在保存新文件之前删除文件。但我想找到解除保护的解决方案。

4

2 回答 2

5

在 cmd 中尝试 attrib 命令更改文件属性 attrib *.xls -r将帮助您删除只读属性。

于 2012-08-28T06:45:05.320 回答
5

这是一种使用 FileSystemObject 从 VBA 中删除只读属性的方法:

Sub RemoveReadOnly(filePath As String)
    Dim FSO As FileSystemObject
    Dim f As Scripting.File
    Set FSO = New FileSystemObject
    Set f = FSO.GetFile(filePath)

    If fil.Attributes And ReadOnly Then 'It's read-only. Remove that attribute.
        fil.Attributes = fil.Attributes - ReadOnly
    End If
End Sub

用法:

RemoveReadOnly "C:\mydir\myReadOnlyFile.dat"

更多信息:http: //msdn.microsoft.com/en-us/library/5tx15443%28v=vs.85%29.aspx

注意:以上需要如下设置参考:工具 > 参考... > 在 Microsoft Scripting Runtime 旁边设置复选标记。

如果您不想设置引用,请改用后期绑定:

Sub RemoveReadOnly(filePath As String)
    Dim FSO As Object
    Dim fil As Object    
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fil = FSO.GetFile(filePath)

    If fil.Attributes And 1 Then '1 = ReadOnly
        fil.Attributes = fil.Attributes - 1
    End If
End Sub
于 2012-08-28T06:56:19.993 回答