[Déplacé VB6 --> VBA] ouvrir un fichier word protégé par mot de passe avec une m [Résolu]

Messages postés
2
Date d'inscription
lundi 31 août 2009
Dernière intervention
1 septembre 2009
- 31 août 2009 à 19:21 - Dernière réponse :
Messages postés
2
Date d'inscription
lundi 31 août 2009
Dernière intervention
1 septembre 2009
- 1 sept. 2009 à 18:48
Bonjour,
Je bidouille depuis un petit moment en VBA avec excel 2007 et word 2007 j'ai créé une macro sous excel qui appele un fichier word protégé par mot de passe à l'ouverture.
Le nom du fichier word varie selon la date de création du fichier word c'est pour cela que je fait via excel une liste organiser par date .
Je voudrais que le fichier s'ouvre sans devoir taper le mot de passe
je joint mon code et merci d'avance pour l'aide que vous pouvez m'apporter

Option Explicit


Sub triDecroissant_Fichiers_DateDreation()
Dim Fichier As String, Chemin As String
'
'Nécessite d'activer la référence "Microsoft Scripting RunTime"
'
Dim Fso As Scripting.FileSystemObject
Dim FileItem As Scripting.file
Dim Tableau()
Dim Plage As Range
Dim m As Integer, i As Integer
Dim z As Byte, Valeur As Byte
Dim Cible As Variant

'---liste les fichiers du répertoire ---
Chemin = "C:\Users\FABRICE\Documents\sauvegarde\2009"
Fichier = Dir(Chemin & "\*.docx")
'pour filtrer sur un type de fichiers (par exemple xls)
'Fichier = Dir(Chemin & "\*.xls")

'Boucle sur les fichiers
Do

m = m + 1
ReDim Preserve Tableau(1 To 2, 1 To m)
Tableau(1, m) = Fichier

Set Fso = CreateObject("Scripting.FileSystemObject")
Set FileItem = Fso.GetFile(Chemin & "" & Fichier)

'Récupère la date de création
Tableau(2, m) = Left(FileItem.DateCreated, 10)
'Pour récupérer la date de dernière modification
'Tableau(2, m) = Left(FileItem.DateLastModified, 10)
'Pour récupérer la taille du fichier
'Tableau(2, m) = Left(FileItem.Size, 10)

Fichier = Dir
Loop Until Fichier = ""


'---Trie les fichiers par ordre décroissant de création ---
Do
Valeur = 0
For i = 1 To m - 1
If CDate(Tableau(2, i)) < CDate(Tableau(2, i + 1)) Then
For z = 1 To 2
Cible = Tableau(z, i)
Tableau(z, i) = Tableau(z, i + 1)
Tableau(z, i + 1) = Cible
Next z

Valeur = 1
End If
Next i
Loop While Valeur = 1


'--- Transfère les données dans la feuille de calcul ---
Set Plage = Worksheets("Feuila").Range("A1")
Set Plage = Plage.Resize(UBound(Tableau(), 2), UBound(Tableau()))
Plage = Application.Transpose(Tableau())

Dim appword As Word.Application
Set appword = New Word.Application

Application.DisplayAlerts = True
appword.Documents.Open Filename:="C:\Users\FABRICE\Documents\sauvegarde\2009" & Worksheets("Feuila").Range("A1")
appword.Visible = True

End Sub
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
1 sept. 2009 à 10:06
3
Merci
Salut
Tout ce code pour voir les seules 8 dernières lignes intéressantes liées à ta question : Essaye de faire plus léger la prochaine fois, sinon tu risques de décourager le lecteur.

Le VBA de Excel ou de Word sont les mêmes.
Je te conseille donc d'ouvrir Word et d'enregistrer une macro pendant que ouvres ton fichier Word avec mot de passe, puis de regarder le code généré : Tu verras alors la syntaxe à utiliser.
Tu n'as plus qu'à le coller dans Excel.

La syntaxce complète est donc :
    Documents.Open FileName:="coucou.doc", ConfirmConversions:=False, ReadOnly _
        :=False, AddToRecentFiles:=False, PasswordDocument:="mon mot de passe", _
        PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
        WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
2
Date d'inscription
lundi 31 août 2009
Dernière intervention
1 septembre 2009
1 sept. 2009 à 18:48
0
Merci
salut
mille merci j'ai copié coller le code et ça fonctionne du premier coup
encore merci
Commenter la réponse de scann59

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.