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

helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009 - 23 févr. 2007 à 23:22
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 24 févr. 2007 à 00:42
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

8 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 févr. 2007 à 23:33
Alors là, je crois bien qu'il faudra jouer avec
Application.DisplayAlerts  et ses valeurs True et False
Mortalino ???
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 févr. 2007 à 23:51
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>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 févr. 2007 à 00:00
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>
0
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
24 févr. 2007 à 00:19
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 :-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
24 févr. 2007 à 00:20
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
0
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
24 févr. 2007 à 00:24
helas non car depuis excel lors de la tentative d ouverture du document word, c deja trop tard la question est posee :-(
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 févr. 2007 à 00:40
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>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 févr. 2007 à 00:42
le       , xlSheet As Worksheet    
est inutile..

@++

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