VBA - Forcer ouverture d un document word en mode lecture seule

Signaler
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
22 avril 2009
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour,

 Je cherche un moyen simple (toujours depuis du code vba executé depuis
Excel) de ne pas afficher la fenetre office qui est proposee a l
utilisateur lorsque je tente d ouvrir un document word deja ouvert
(fenetre ou l utilisateur doit repondre au radio bouton : Ouvrir en
lecture seule, Etre notifie quand il se libere,...)
Je cherche donc l instruction vba qui permet d ouvrir le fichier word en forçant le mode à lecture seule sans demander le choix a l utilisateur
Merci d avance
A voir également:

8 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Alors là, je crois bien qu'il faudra jouer avec
Application.DisplayAlerts  et ses valeurs True et False
Mortalino ???
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

je ne sais pas si cette instruction fonctionne pour l'ouverture d'un document depuis un tableur, mais c'est possible.
Je regarde. Sinon, il faudra jouer avec GetObject.

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Non, ça ne fonctionne pas.Que ce soit Application.DisplayAlerts <gras>False, wordApp.DisplayAlerts</gras> wdAlertsNone , ou les deux, j'ai quand même la demande depuis Word sur l'ouverture du fichier en lecture seule.

Je vois donc pour GetObject

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
22 avril 2009

merci d essayer :-)
Par contre en supposant que vous arriviez a me filer la bonne instruction, il prendrait quoi comme option par defaut (lecture seule, notification,..)
Merci encore et d avance :-)
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
De quelle façon procèdes-tu pour ouvrir le document Word ?

Je n'utilise jamais Word, mais pour ouvrir un fichier Excel (à partir d'un autre), il y a un paramètre dans la fonction Workbooks.Open pour spécifier en lecture seule... Est-ce que c'est applicable dans ton cas ?

MPi
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
22 avril 2009

helas non car depuis excel lors de la tentative d ouverture du document word, c deja trop tard la question est posee :-(
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Bon voici comment faire.

Pense à changer la constante MyDoc. C'est tout ce que tu as à faire :

Private Const OF_SHARE_EXCLUSIVE =  &H10
Private Const OF_SHARE_DENY_READ = &H30
Public Const MyDoc      As String = "C:\Documents and Settings\pcdex\Bureau\Nouveau.doc"

Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long

Public Sub TestFile(FileToOpen As String)
    Dim wdApp As Word.Application, wdDoc As Word.Document, xlSheet As Worksheet
    Dim hFile As Long
    
hFile = -1

hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE)

If hFile <> -1 Then 'pas ouvert
    lclose (hFile)
    
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True
        Set wdDoc = wdApp.Documents.Open(MyDoc)
        
ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert
    lclose (hFile)
    
        Set wdApp = CreateObject("Word.Application")
        wdApp.Visible = True
        Set wdDoc = wdApp.Documents.Open(MyDoc, , True)

End If
    
End Sub

Sub OUVRIR_TON_FICHIER()

    Call TestFile(MyDoc)

End Sub

~ <small> Mortalino ~ Colorisation automatique </small>

Place le tout dans un Module, et quand tu en as besoin, fais Call OUVRIR_TON_FICHIER

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
le       , xlSheet As Worksheet    
est inutile..

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>