Fichier en lecture seule

Quand un fichier est en lecture seule, il est quand même possible d'écrire dedans même si ensuite on ne peut pas enregistrer. Comment donc déterminer qu'un classeur est en lecture seule ?

Voici une fonction pour déterminer si un fichier possède l'attribut "Lecture seule"

Function LectureSeule(FileName As String) As Boolean
 
 Dim Fs As Object, St As Integer
  Set Fs = CreateObject("Scripting.FileSystemObject")
  Set f = Fs.GetFile(FileName)
  St = f.Attributes
 
  If St = 1 Or St = 33 Then
    LectureSeule = True
  Else
    LectureSeule = False
  End If
 End Function

Dans le ThisWorkbook de ton classeur , tu inscris ceci:

Private sub Workbook_Open()
 
 Dim Sh As Worksheet
 If LectureSeule(ActiveWorkbook.FullName) = True Then
  For Each Sh In ActiveWorkbook.Worksheets
    Sh.Cells.Locked = True 'verrouille les cellules déverrouillées  avant de protéger les feuilles
    Sh.Protect
  Next
 End If
 
 end sub

Si ton classeur possède l'attribut lecture seule , toutes les feuilles de travail seront protégées. Pour ne pas avoir à répondre à la question "Voulez-vous sauvegarder vos données ? Mets ceci dans ThisWorkbook :

Private sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
 
 If LectureSeule(ActiveWorkbook.FullName) = True Then
  Cancel = False
 End If
 end sub

Auteur :

Mots clefs associés à cette page : , , , , ,