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

Résolu
scann59 Messages postés 2 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 septembre 2009 - 31 août 2009 à 19:21
scann59 Messages postés 2 Date d'inscription lundi 31 août 2009 Statut Membre 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

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 sept. 2009 à 10:06
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)
3
scann59 Messages postés 2 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 1 septembre 2009
1 sept. 2009 à 18:48
salut
mille merci j'ai copié coller le code et ça fonctionne du premier coup
encore merci
0
Rejoignez-nous