recuperer infos d'un fichier sans l'ouvrir
Le
magic-dd

bonsoir
j'essaye par une macro dans mon fichier récapitulatif récupérer les i=
nfos d'enregistrement d'un autre classeur sans que celui ci s'ouvre
le chemin de celui ci est dans mon fichier en cellule A5
or il s'ouvre :)
voici ma procedure
Sub modif()
'ouverture du fichier concerné
Dim cl As String
cl = [a5].Value
Workbooks.Open (cl) ' à adapter
With ThisWorkbook
MsgBox "auteur: " & .BuiltinDocumentProperties("Author") & vbLf & _
"le: " & .BuiltinDocumentProperties("creation date") & vbLf=
& _
"dernier enregistrement le " & .BuiltinDocumentProperties("=
last save time") & vbLf & _
" par: " & .BuiltinDocumentProperties("last author")
ThisWorkbook.Close
End With
End Sub
comment faire pour que celui ci reste bien sagement fermé
j'essaye par une macro dans mon fichier récapitulatif récupérer les i=
nfos d'enregistrement d'un autre classeur sans que celui ci s'ouvre
le chemin de celui ci est dans mon fichier en cellule A5
or il s'ouvre :)
voici ma procedure
Sub modif()
'ouverture du fichier concerné
Dim cl As String
cl = [a5].Value
Workbooks.Open (cl) ' à adapter
With ThisWorkbook
MsgBox "auteur: " & .BuiltinDocumentProperties("Author") & vbLf & _
"le: " & .BuiltinDocumentProperties("creation date") & vbLf=
& _
"dernier enregistrement le " & .BuiltinDocumentProperties("=
last save time") & vbLf & _
" par: " & .BuiltinDocumentProperties("last author")
ThisWorkbook.Close
End With
End Sub
comment faire pour que celui ci reste bien sagement fermé
Tu dois ouvrir le classeur pour utiliser les BuiltinDocumentProperties.
Tu peux, sans ouvrir le classeur, récupérer certaines propriétés avec
FSO :
Set fso = CreateObject("Scripting.FileSystemObject")
DateDeCreation =
fso.getfile("C:UsersDanielDocumentsDonneesDanielmpfe121211.xlsm").datecreated
Tu peux ainsi récupérer :
- la date de création
- la date du dernier accès
- la date de dernière modification
- la taille
- le type du fichier
Daniel
cela doit il s'ecrire comme cela alors
Sub modif()
'ouverture du fichier concerné
Dim cl As String
cl = [a5].Value
Set fso = CreateObject("Scripting.FileSystemObject")
DateDeModif =fso.getfile(cl).datemodified
range("a5")ÚteDeModif
End Sub
Le jeudi 13 décembre 2012 20:43:40 UTC+1, DanielCo a écrit :
Pour pouvoir retrouver l'information concernant ces propriétés du fichier :
Title
Subject
Author
Keywords
Comments
Template
Last author
Revision number
Application name
Last print date
Creation date
Last save time
Total editing time
Number of pages
Number of words
Number of characters
Security
Category
Format
Manager
Company
Number of bytes
Number of lines
Number of paragraphs
Number of slides
Number of notes
Number of hidden Slides
Number of multimedia clips
Hyperlink base
Number of characters (with spaces)
Content type
Content status
Language
Document version
Je te propose ceci :
Tu remplaces dans la procédure, le nom de la propriété Author par celle que tu désires.
Le fichier est ouvert mais non visible par l'usager.
'------------------------------------------------------------
Sub test()
Dim Fichier As String, X As Workbook
Dim FileName As String
FileName = "C:ExcelExcel1.xls" 'À adapter
If Dir(FileName) <> "" Then
Fichier = Mid(FileName, InStrRev(FileName, "") + 1, 100)
Set X = GetObject(FileName)
MsgBox X.BuiltinDocumentProperties(Author).Value
X.Close: Set X = Nothing
Else
MsgBox "Fichier ou chemin non valide."
End If
End Sub
'------------------------------------------------------------
Pour ne pas à avoir à ouvrir le fichier, regarde ici :
http://frederic.sigonneau.free.fr/code/Fichiers/PropertyReader.txt
Si tu as Windows 64 bits, regarde plutôt ici :
http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-79KRU6
La DLL requise : DSOFILE.DLL doit être téléchargé du Web, puis intégré à la base de registre
avant de pouvoir utiliser sa bibliothèque... Du pain sur la planche!!!
MichD
--------------------------------------------------------------
mais est ce que cette solution suivante fonctionnerai aussi sans ajout de D LL
Sub modif()
'ouverture du fichier concerné
Dim cl As String
cl = [a5].Value
Set fso = CreateObject("Scripting.FileSystemObject")
DateDeModif =fso.getfile(cl).datemodified
range("a5")ÚteDeModif
End Sub
j'ai bien peur que le responsable informatique ne veuille m'installer cette dll
merci de ton aide
Le jeudi 13 décembre 2012 21:36:53 UTC+1, MichD a écrit :
avec ta procédure :
Name, DateCreated, DateLastModified, DateLastAccessed, Size, Type
| sans ajout de DLL
Cette DLL comme tu l'appelles est déjà présente sur l'ordinateur :
Le nom de la bibliothèque : Scripting
Le fichier responsable de cette bibliothèque
C:WindowsSysWOW64scrrun.dll 'Pour Windows 64 bits
C:WindowsSystem32scrrun.dll 'Pour Windows 32 bits
Le nom descriptif dans la liste de la fenêtre des références :
Microsoft Scripting Runtime
La procédure que tu utilises emploie une "liaison tardive" avec cette ligne
de code : Set fso = CreateObject("Scripting.FileSystemObject")
ce qui permet d'utiliser la bibliothèque dans charger la référence.
MichD
--------------------------------------------------------------
donc quelle sera la bonne facon d'ecrire ma macro?
Sub modif()
'ouverture du fichier concerné
Dim cl As String
cl = [a5].Value
Set fso = CreateObject("Scripting.FileSystemObject")
DateDeModif =fso.getfile(cl).DateLastModified
range("a5")ÚteDeModif
End Sub
est ce correct ?
merci
Le jeudi 13 décembre 2012 22:16:06 UTC+1, MichD a écrit :
'-------------------------------------------------
Sub Caractéristiques_Fichier()
Dim Arr(), Fichier As String, FSO As Object
'Tu peux traduire ces expressions en français...
Arr = Array("Name", "DateCreated", _
"DateLastModified", "DateLastAccessed", "Size", "Type")
Fichier = "c:ExcelExcel1.xls" 'à définir
Set FSO = CreateObject("Scripting.FileSystemObject")
Range("A1").Resize(, UBound(Arr) + 1) = Arr
With FSO.getfile(Fichier)
Range("A2") = .Name
Range("B2") = .DateCreated
Range("C2") = .DateLastModified
Range("D2") = .DateLastAccessed
Range("E2") = .Size
Range("F2") = .Type
End With
Range("A1").CurrentRegion.EntireColumn.AutoFit
End Sub
'-------------------------------------------------
MichD
--------------------------------------------------------------
je test au bureau demain ( apres le café) et je te dis ce qu'il en est
bonne fin de soirée
Le jeudi 13 décembre 2012 22:41:28 UTC+1, MichD a écrit :
La fonction "GetObject" ouvre le fichier, il me semble; masqué, mais
ouvert.
Cordialement.
Daniel
Il est intéressant de mettre avant "GetObject" :
Application.EnableEvents = False
pour éviter l'exécution des macros Workbook_Open.
Et de rétablir après, bien sûr.
Daniel