如何编辑只读 Word 文档 (VBA)
How to Edit a Read-Only Word Document (VBA)
我定期从不同的客户处获取 Word 文档,有时他们会以 'Read-Only' 模式发送给我。虽然手动转到 'View > Edit Document' 没什么大不了的,但我似乎无法在我的 VBA 代码中找到如何执行此操作。
将文档打开为可编辑或在打开后将其切换为可编辑就足以满足我的需要。
请注意,我无法使用 'readOnly = false' 打开文档,因为它看起来设置为 'readOnly recommended'(基于我对 Document.Open 上的 MS 手册页的阅读)。
在上下文中:
我还遇到了关闭文档默认打开的 'read-mode' 的问题。我已经发布了这个问题和答案 here。
下面的代码将更改已关闭文件的 ReadOnly 属性,根据提供给过程的参数将其 ReadOnly 属性设置为 True 或 False。
Private Sub SetReadOnlyProperty(Fn As String, _
ByVal ReadOnly As Boolean)
' 21 Nov 2017
Dim Fso As Object
Dim Doc As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Doc = Fso.GetFile(Fn)
If (Doc.Attributes And vbReadOnly) <> Abs(Int(ReadOnly)) Then
Doc.Attributes = Doc.Attributes Xor vbReadOnly
End If
End Sub
此过程需要访问 MS 脚本运行时 DLL。通过在 VBE window 中的“工具”>“参考”中选中 Miscrosoft Scripting Runtime
复选框来启用此访问权限。以下是如何调用该函数的示例。请注意,如果提供的文件不存在,将导致错误。
Private Sub TestReadOnly()
SetReadOnlyProperty "H:\Test Folder\Test File.docx", False
End Sub
我定期从不同的客户处获取 Word 文档,有时他们会以 'Read-Only' 模式发送给我。虽然手动转到 'View > Edit Document' 没什么大不了的,但我似乎无法在我的 VBA 代码中找到如何执行此操作。
将文档打开为可编辑或在打开后将其切换为可编辑就足以满足我的需要。
请注意,我无法使用 'readOnly = false' 打开文档,因为它看起来设置为 'readOnly recommended'(基于我对 Document.Open 上的 MS 手册页的阅读)。
在上下文中: 我还遇到了关闭文档默认打开的 'read-mode' 的问题。我已经发布了这个问题和答案 here。
下面的代码将更改已关闭文件的 ReadOnly 属性,根据提供给过程的参数将其 ReadOnly 属性设置为 True 或 False。
Private Sub SetReadOnlyProperty(Fn As String, _
ByVal ReadOnly As Boolean)
' 21 Nov 2017
Dim Fso As Object
Dim Doc As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Doc = Fso.GetFile(Fn)
If (Doc.Attributes And vbReadOnly) <> Abs(Int(ReadOnly)) Then
Doc.Attributes = Doc.Attributes Xor vbReadOnly
End If
End Sub
此过程需要访问 MS 脚本运行时 DLL。通过在 VBE window 中的“工具”>“参考”中选中 Miscrosoft Scripting Runtime
复选框来启用此访问权限。以下是如何调用该函数的示例。请注意,如果提供的文件不存在,将导致错误。
Private Sub TestReadOnly()
SetReadOnlyProperty "H:\Test Folder\Test File.docx", False
End Sub