Author Topic: Read/write only by VBA approach  (Read 3001 times)

0 Members and 1 Guest are viewing this topic.


  • Guest
Read/write only by VBA approach
« on: September 08, 2005, 10:37:40 AM »

Is there a way that files are for the user not to approach by excel with the open button, but when a vba macro is run from his
pc it will allow writing ?




  • Guest
Re: Read/write only by VBA approach
« Reply #1 on: September 08, 2005, 02:17:21 PM »
A quick search of the VBA HELP FILES revealed this lil' tidbit:

Attributes Property


Sets or returns the attributes of files or folders. Read/write or read-only, depending on the attribute.


object.Attributes [= newattributes]

The Attributes property has these parts:

Part Description
object Required. Always the name of a File or Folder object.
newattributes Optional. If provided, newattributes is the new value for the attributes of the specified object.


The newattributes argument can have any of the following values or any logical combination of the following values:

Constant Value Description
Normal 0 Normal file. No attributes are set.
ReadOnly 1 Read-only file. Attribute is read/write.
Hidden 2 Hidden file. Attribute is read/write.
System 4 System file. Attribute is read/write.
Volume 8 Disk drive volume label. Attribute is read-only.
Directory 16 Folder or directory. Attribute is read-only.
Archive 32 File has changed since last backup. Attribute is read/write.
Alias 64 Link or shortcut. Attribute is read-only.
Compressed 128 Compressed file. Attribute is read-only.


The following code illustrates the use of the Attributes property with a file:

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."
            MsgBox "Archive bit remains set."
        End If
        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."
            MsgBox "Archive bit remains clear."
        End If
    End If
End Sub