scann59
Messages postés2Date d'inscriptionlundi 31 août 2009StatutMembreDernière intervention 1 septembre 2009
-
31 août 2009 à 19:21
scann59
Messages postés2Date d'inscriptionlundi 31 août 2009StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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)