?如何用vba先打开word只读属性,程序修改后,然后再赋与只读属性?

时间:2021-03-21 06:25:18
各位老师,如何用vba先打开word文档只读属性,我的程序修改文档后(要自动加编号),然后再赋于只读属性,因为文档很重要,用户不能修改其内容。如何实现?

2 个解决方案

#1


先用FSO对文件进行操作,去除只读属性后,再打开文件,然后再操作,关闭,再用FSO对文件进行操作,加上只读属性

#2


Attributes 属性
         

描述

设置或者返回文件或文件夹的属性。读/写或只读,取决于属性。

语法

object.Attributes [= newattributes]

Attributes 属性有下列几个部分:

部分 描述 
object 必需的。总是某个 File 或者 Folder 对象的名字。 
newattributes 可选的。如果提供的话,newattributes 就是所指定 object 的新属性值。 


设置

newattributes 参数可以是具有下列值中的任意一个或任意的逻辑组合:

常数 值 描述 
Normal 0 一般文件。未设置属性。 
ReadOnly 1 只读文件。属性为读/写。 
Hidden 2 隐藏文件。属性为读/写。 
System 4 系统文件。属性为读/写。 
Volume 8 磁盘驱动器卷标。属性为只读。 
Directory 16 文件夹或目录。属性为只读。 
Archive 32 自上次备份后已经改变的文件。属性为读/写。 
Alias 64 链接或快捷方式。属性为只读。 
Compressed 128 压缩文件。属性为只读。 


说明

下面的代码用一个文件举例说明了 Attributes 属性的用法:

Sub SetClearArchiveBit(filespec)
    Dim fs, f, r
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(fs.GetFileName(filespec))
    If f.attributes and 32 Then
        r = MsgBox("The Archive bit is set, do you want to clear it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes - 32
            MsgBox "Archive bit is cleared."
        Else
            MsgBox "Archive bit remains set."
        End If
    Else
        r = MsgBox("The Archive bit is not set. Do you want to set it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes + 32
            MsgBox "Archive bit is set."
        Else
            MsgBox "Archive bit remains clear."
        End If
    End If
End Sub

#1


先用FSO对文件进行操作,去除只读属性后,再打开文件,然后再操作,关闭,再用FSO对文件进行操作,加上只读属性

#2


Attributes 属性
         

描述

设置或者返回文件或文件夹的属性。读/写或只读,取决于属性。

语法

object.Attributes [= newattributes]

Attributes 属性有下列几个部分:

部分 描述 
object 必需的。总是某个 File 或者 Folder 对象的名字。 
newattributes 可选的。如果提供的话,newattributes 就是所指定 object 的新属性值。 


设置

newattributes 参数可以是具有下列值中的任意一个或任意的逻辑组合:

常数 值 描述 
Normal 0 一般文件。未设置属性。 
ReadOnly 1 只读文件。属性为读/写。 
Hidden 2 隐藏文件。属性为读/写。 
System 4 系统文件。属性为读/写。 
Volume 8 磁盘驱动器卷标。属性为只读。 
Directory 16 文件夹或目录。属性为只读。 
Archive 32 自上次备份后已经改变的文件。属性为读/写。 
Alias 64 链接或快捷方式。属性为只读。 
Compressed 128 压缩文件。属性为只读。 


说明

下面的代码用一个文件举例说明了 Attributes 属性的用法:

Sub SetClearArchiveBit(filespec)
    Dim fs, f, r
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(fs.GetFileName(filespec))
    If f.attributes and 32 Then
        r = MsgBox("The Archive bit is set, do you want to clear it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes - 32
            MsgBox "Archive bit is cleared."
        Else
            MsgBox "Archive bit remains set."
        End If
    Else
        r = MsgBox("The Archive bit is not set. Do you want to set it?", vbYesNo, "Set/Clear Archive Bit")
        If r = vbYes Then 
            f.attributes = f.attributes + 32
            MsgBox "Archive bit is set."
        Else
            MsgBox "Archive bit remains clear."
        End If
    End If
End Sub