2017-10-17 19 views
0

Mon fichier Excel a cet attribut coché, ce que je veux.Macro Excel VBA pour donner un accès en écriture au fichier lorsque l'attribut de propriété en lecture seule est coché

***enter image description here***

Par conséquent, il ouvre en lecture seule. Ce fichier a parfois besoin d'être modifié et sauvegardé.

Il serait bien d'avoir une macro (1) qui pourrait être exécutée (lorsque le fichier est ouvert en lecture seule) qui a basculé en accès en écriture, in situ.

Je ferais alors les changements et exécuterais la macro (2) qui la rende à nouveau en lecture seule.

De cette façon, je ne suis pas obligé de décocher les attributs de propriété avant de passer en édition car parfois vous ne savez même pas si vous allez devoir éditer.

+0

Je ne suis pas sûr, mais on ne peut pas le faire avec VBA seulement. Vous devez accéder à * la ligne de commande * avec 'Shell'. – AntiDrondert

Répondre

1

Vous pouvez utiliser une routine comme ceci:

Sub MakeReadOnly(sFile As String, Optional bReadOnly As Boolean = True) 
    SetAttr sFile, IIf(bReadOnly, vbReadOnly, vbNormal) 
End Sub 

appelé comme celui-ci pour le rendre en lecture seule:

MakeReadOnly "C:\blah.xlsx" 

et pour effacer la lecture seule:

MakeReadOnly "C:\blah.xlsx", False 

Idéalement, vous échangeriez les bits de sorte que vous n'affectiez pas les autres attributs, mais cela devrait être fait ici.

+0

Merci Rory. votre code couplé avec ActiveWorkbook.ChangeFileAccess Mode: = xlReadWrite et ActiveWorkbook.ChangeFileAccess Mode: = xlReadWrite Je peux réaliser ce que je veux. –