Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Rebonjour,
J'ai essayé la nouvelle version de la dll et le programme de
démonstration VB qui vient avec, avec Windows98 SE et VB6, sur le
nombre "mirobolant" (enfin, cela dépend du point de vue) de 2
classeurs Excel et cela a fonctionné.
DSans le programme Démo VB6, avec la référence cochée (early binding)
la dll est initialisée comme cela:
Dans l'entête du module:
Private m_oDocumentProps As DSOFile.OleDocumentProperties
Dans la proédure:
Set m_oDocumentProps = New DSOFile.OleDocumentProperties
Donc, avec le Late Binding (sans cocher la référence), et ton
programme à toi, et la nouvelle dll, tu devrais avoir quelque chose
du genre, en croisant les doigts:
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
Chez moi, les deux versions de la dll sont dans des dossiers
différents, et cela semble cohabiter.
Je t'ai mis l'ancienne version là, si t tu préfères essayer l'ancienne
version avec le programme actuel:
http://cjoint.com/?mtwLRekCyv
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans lefil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txtmais je pense que la bibliothèque a été modifiée car c'est la
version :DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO >>CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Rebonjour,
J'ai essayé la nouvelle version de la dll et le programme de
démonstration VB qui vient avec, avec Windows98 SE et VB6, sur le
nombre "mirobolant" (enfin, cela dépend du point de vue) de 2
classeurs Excel et cela a fonctionné.
DSans le programme Démo VB6, avec la référence cochée (early binding)
la dll est initialisée comme cela:
Dans l'entête du module:
Private m_oDocumentProps As DSOFile.OleDocumentProperties
Dans la proédure:
Set m_oDocumentProps = New DSOFile.OleDocumentProperties
Donc, avec le Late Binding (sans cocher la référence), et ton
programme à toi, et la nouvelle dll, tu devrais avoir quelque chose
du genre, en croisant les doigts:
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
Chez moi, les deux versions de la dll sont dans des dossiers
différents, et cela semble cohabiter.
Je t'ai mis l'ancienne version là, si t tu préfères essayer l'ancienne
version avec le programme actuel:
http://cjoint.com/?mtwLRekCyv
"Christian.L" <christianlecossier@free.fr> a écrit dans le message de
news:%23cEZhve5EHA.2428@TK2MSFTNGP14.phx.gbl...
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO >>CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Rebonjour,
J'ai essayé la nouvelle version de la dll et le programme de
démonstration VB qui vient avec, avec Windows98 SE et VB6, sur le
nombre "mirobolant" (enfin, cela dépend du point de vue) de 2
classeurs Excel et cela a fonctionné.
DSans le programme Démo VB6, avec la référence cochée (early binding)
la dll est initialisée comme cela:
Dans l'entête du module:
Private m_oDocumentProps As DSOFile.OleDocumentProperties
Dans la proédure:
Set m_oDocumentProps = New DSOFile.OleDocumentProperties
Donc, avec le Late Binding (sans cocher la référence), et ton
programme à toi, et la nouvelle dll, tu devrais avoir quelque chose
du genre, en croisant les doigts:
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
Chez moi, les deux versions de la dll sont dans des dossiers
différents, et cela semble cohabiter.
Je t'ai mis l'ancienne version là, si t tu préfères essayer l'ancienne
version avec le programme actuel:
http://cjoint.com/?mtwLRekCyv
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans lefil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txtmais je pense que la bibliothèque a été modifiée car c'est la
version :DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO >>CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'une
version + récente ne soit pas compatible avec une plus ancienne
(c'est le sens
de ma réponse au demandeur dans son premier fil).
A suivre.
Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'une
version + récente ne soit pas compatible avec une plus ancienne
(c'est le sens
de ma réponse au demandeur dans son premier fil).
A suivre.
Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'une
version + récente ne soit pas compatible avec une plus ancienne
(c'est le sens
de ma réponse au demandeur dans son premier fil).
A suivre.
Bonjour,Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'uneversion + récente ne soit pas compatible avec une plus ancienne
(c'est le sensde ma réponse au demandeur dans son premier fil).
A suivre.
Il y a effectivement quelques "crocheries" dans l'histoire;
notamment
que dans la liste des propriétés supportées. Dans la liste de
l'array
de la procédure de ton site, il faut en supprimer 4. (Pas pris le
temps de vérifier si on peut les récupérer du côté des "Custom",
mais
elles ne le sont plus du côté des "Built-in" (À moins que ce ne soit
dû à mon Windows "antique")
Également, toujours de la liste de l'array, il y en a 2 dont le nom
a
été modifié.
Je le mentionne en commentaires dans le module réécrit, que j'ai
ajouté, un plus bas, dans le message.
Il y a également l'ajout d'une méthode Open pour accéder au classeur
(ou au fichier en cause).
J'ai repris laligne de la méthode open du démo VB6 de la nouvelle
version. En VB6 on peut ouvrir le fichier en lecture seule, la ligne
d'appel en tient compte. On pourrait peut-être la modofier pour VBA,
mais je n'ai pas essayé.
Voici donc le "module" obtenu en reprenant la procédure originale de
ton site et adaptée à la sauce 2.0
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 9)
MsgBox ReadProperties(Fich)(9)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional
flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
'Instruction prise directement d'un programme VB6
'A fonctionné tel quel avec VBA.
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
' Obtenir le propriétés Standard
'Les BuiltinProperties
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever IsReadOnly,Location,
'Name et Hasmacros.
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Function
'renvoie dans un tableau 9 des propriétés d'un fichier
Function ReadProperties(CheminAcces$)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperties = ArrProps
End Function
Bonjour,
Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'une
version + récente ne soit pas compatible avec une plus ancienne
(c'est le sens
de ma réponse au demandeur dans son premier fil).
A suivre.
Il y a effectivement quelques "crocheries" dans l'histoire;
notamment
que dans la liste des propriétés supportées. Dans la liste de
l'array
de la procédure de ton site, il faut en supprimer 4. (Pas pris le
temps de vérifier si on peut les récupérer du côté des "Custom",
mais
elles ne le sont plus du côté des "Built-in" (À moins que ce ne soit
dû à mon Windows "antique")
Également, toujours de la liste de l'array, il y en a 2 dont le nom
a
été modifié.
Je le mentionne en commentaires dans le module réécrit, que j'ai
ajouté, un plus bas, dans le message.
Il y a également l'ajout d'une méthode Open pour accéder au classeur
(ou au fichier en cause).
J'ai repris laligne de la méthode open du démo VB6 de la nouvelle
version. En VB6 on peut ouvrir le fichier en lecture seule, la ligne
d'appel en tient compte. On pourrait peut-être la modofier pour VBA,
mais je n'ai pas essayé.
Voici donc le "module" obtenu en reprenant la procédure originale de
ton site et adaptée à la sauce 2.0
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 9)
MsgBox ReadProperties(Fich)(9)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional
flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
'Instruction prise directement d'un programme VB6
'A fonctionné tel quel avec VBA.
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
' Obtenir le propriétés Standard
'Les BuiltinProperties
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever IsReadOnly,Location,
'Name et Hasmacros.
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Function
'renvoie dans un tableau 9 des propriétés d'un fichier
Function ReadProperties(CheminAcces$)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperties = ArrProps
End Function
Bonjour,Merci du relais. Je n'ai pas encore fait d'essai mais je suis
surpris qu'uneversion + récente ne soit pas compatible avec une plus ancienne
(c'est le sensde ma réponse au demandeur dans son premier fil).
A suivre.
Il y a effectivement quelques "crocheries" dans l'histoire;
notamment
que dans la liste des propriétés supportées. Dans la liste de
l'array
de la procédure de ton site, il faut en supprimer 4. (Pas pris le
temps de vérifier si on peut les récupérer du côté des "Custom",
mais
elles ne le sont plus du côté des "Built-in" (À moins que ce ne soit
dû à mon Windows "antique")
Également, toujours de la liste de l'array, il y en a 2 dont le nom
a
été modifié.
Je le mentionne en commentaires dans le module réécrit, que j'ai
ajouté, un plus bas, dans le message.
Il y a également l'ajout d'une méthode Open pour accéder au classeur
(ou au fichier en cause).
J'ai repris laligne de la méthode open du démo VB6 de la nouvelle
version. En VB6 on peut ouvrir le fichier en lecture seule, la ligne
d'appel en tient compte. On pourrait peut-être la modofier pour VBA,
mais je n'ai pas essayé.
Voici donc le "module" obtenu en reprenant la procédure originale de
ton site et adaptée à la sauce 2.0
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 9)
MsgBox ReadProperties(Fich)(9)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional
flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
'Instruction prise directement d'un programme VB6
'A fonctionné tel quel avec VBA.
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
' Obtenir le propriétés Standard
'Les BuiltinProperties
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever IsReadOnly,Location,
'Name et Hasmacros.
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Function
'renvoie dans un tableau 9 des propriétés d'un fichier
Function ReadProperties(CheminAcces$)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperties = ArrProps
End Function
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour,
Juste avant le dodo, et après les recherches que je raconte, un peu
plus haut. Voici la version DSOFile 2.0 qui remplace mon autre qui
"remplaçait" (peut-être) celle du site de Frédéric. J'ai du faire
quelques réaménagements dan l'ordre initial et dans les noms des
propriétés. En fait Microsoft, semble avoir décidé de calquer les noms
des propriétés sur celles des fenêtres "Propriétés" d'Office. Ils ont
donc changé quelques noms et zigouillé la propriété Hasmacros
Donc ces procédures remplacent celles que j'avais envoyées
précédemment:
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 12)
MsgBox ReadProperties(Fich)(12)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
'Obtenir les propriétés
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties". Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Set oSummProps = DSO.SummaryProperties
Select Case NumProp
Case 10
'Propriété Name, non incluse dans les "SummaryProperties"
ReadProperty = DSO.Name
Case 11
'Propriété Path, non incluse dans "SummaryProperties"
ReadProperty = DSO.Path
Case 12
'Propriété IsReadOnly non incluse dans les "Summary Properties"
ReadProperty = DSO.isreadonly
Case Else
'Propriétés incluses dans les "Summary Properties"
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Select
End Function
Function ReadProperties(CheminAcces$)
'renvoie dans un tableau 12 des propriétés d'un fichier
'Version DSOFile :2.0
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties. Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
'En autant que ce sont des prropriétés "Summary"
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version, "", "", "")
End With
'Propriétés non incluses dans les "Summary Properties"
ArrProps(10) = DSO.Name
ArrProps(11) = DSO.Path
ArrProps(12) = DSO.isreadonly
ReadProperties = ArrProps
End Function
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans lefil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour,
Juste avant le dodo, et après les recherches que je raconte, un peu
plus haut. Voici la version DSOFile 2.0 qui remplace mon autre qui
"remplaçait" (peut-être) celle du site de Frédéric. J'ai du faire
quelques réaménagements dan l'ordre initial et dans les noms des
propriétés. En fait Microsoft, semble avoir décidé de calquer les noms
des propriétés sur celles des fenêtres "Propriétés" d'Office. Ils ont
donc changé quelques noms et zigouillé la propriété Hasmacros
Donc ces procédures remplacent celles que j'avais envoyées
précédemment:
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 12)
MsgBox ReadProperties(Fich)(12)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
'Obtenir les propriétés
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties". Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Set oSummProps = DSO.SummaryProperties
Select Case NumProp
Case 10
'Propriété Name, non incluse dans les "SummaryProperties"
ReadProperty = DSO.Name
Case 11
'Propriété Path, non incluse dans "SummaryProperties"
ReadProperty = DSO.Path
Case 12
'Propriété IsReadOnly non incluse dans les "Summary Properties"
ReadProperty = DSO.isreadonly
Case Else
'Propriétés incluses dans les "Summary Properties"
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Select
End Function
Function ReadProperties(CheminAcces$)
'renvoie dans un tableau 12 des propriétés d'un fichier
'Version DSOFile :2.0
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties. Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
'En autant que ce sont des prropriétés "Summary"
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version, "", "", "")
End With
'Propriétés non incluses dans les "Summary Properties"
ArrProps(10) = DSO.Name
ArrProps(11) = DSO.Path
ArrProps(12) = DSO.isreadonly
ReadProperties = ArrProps
End Function
"Christian.L" <christianlecossier@free.fr> a écrit dans le message de
news:%23cEZhve5EHA.2428@TK2MSFTNGP14.phx.gbl...
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour,
Juste avant le dodo, et après les recherches que je raconte, un peu
plus haut. Voici la version DSOFile 2.0 qui remplace mon autre qui
"remplaçait" (peut-être) celle du site de Frédéric. J'ai du faire
quelques réaménagements dan l'ordre initial et dans les noms des
propriétés. En fait Microsoft, semble avoir décidé de calquer les noms
des propriétés sur celles des fenêtres "Propriétés" d'Office. Ils ont
donc changé quelques noms et zigouillé la propriété Hasmacros
Donc ces procédures remplacent celles que j'avais envoyées
précédemment:
Option Explicit
Sub test()
Dim Fich$, S$
Fich = "C:Mes DocumentsMerlin1.xls"
MsgBox ReadProperty(Fich, 12)
MsgBox ReadProperties(Fich)(12)
End Sub
'renvoie directement l'une des propriétés
Function ReadProperty(CheminAcces$, NumProp As Byte)
'Version DSOFile :2.0
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
' Here is where we load the document properties for the file.
' Depending on the read-only option set in the Open dialog, we
' can open for editing or just read-only. If you pass False to
' read-only flag and the file cannot be edited (because of access)
' an error will occur. For simple case, we can pass the optional flag
' ask the component to switch to read-only if file is protected.
'Il faut "ouvrir" le fichier pour qu'il soit reconnu par la dll
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
'Obtenir les propriétés
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties". Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Set oSummProps = DSO.SummaryProperties
Select Case NumProp
Case 10
'Propriété Name, non incluse dans les "SummaryProperties"
ReadProperty = DSO.Name
Case 11
'Propriété Path, non incluse dans "SummaryProperties"
ReadProperty = DSO.Path
Case 12
'Propriété IsReadOnly non incluse dans les "Summary Properties"
ReadProperty = DSO.isreadonly
Case Else
'Propriétés incluses dans les "Summary Properties"
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version)
End With
ReadProperty = ArrProps(NumProp)
End Select
End Function
Function ReadProperties(CheminAcces$)
'renvoie dans un tableau 12 des propriétés d'un fichier
'Version DSOFile :2.0
'Les BuiltinProperties d'Office sont retournées
'par les "SummaryProperties. Les autres viennent de
'l'objet lui-même.
'Notez qu'il y a des différences entre les deux versions
'de la dll. De la liste originale du site de Frédéric,
'il faut changer appName pour ApplicationName, LastEditedBy
'par LastSavedBy et place par path.
'De plus, les propriétés path, name et IsReadOnly ne sont pas
'retournées par "SummaryProperties, mais par l'objet racine
'lui-même. Toujours en partant de la procédure du
'site de Frédéric, il faut enlever Hasmacros qui est disparue
'dans la brume.
Dim DSO As Object
Dim ArrProps
Dim oSummProps As Object
Dim fOpenReadOnly As Boolean, dsoOptionOpenReadOnlyIfNoWriteAccess
Set DSO = CreateObject("DSOFile.OleDocumentProperties")
DSO.Open CheminAcces$, fOpenReadOnly,
dsoOptionOpenReadOnlyIfNoWriteAccess
Set oSummProps = DSO.SummaryProperties
With oSummProps
'ceci peut être modifié pour lire plus de propriétés
'En autant que ce sont des prropriétés "Summary"
ArrProps = Array("", .ApplicationName, .Author, .Comments, _
.Company, .DateCreated, .DateLastPrinted, _
.DateLastSaved, .LastSavedBy, _
.Version, "", "", "")
End With
'Propriétés non incluses dans les "Summary Properties"
ArrProps(10) = DSO.Name
ArrProps(11) = DSO.Path
ArrProps(12) = DSO.isreadonly
ReadProperties = ArrProps
End Function
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond
dans lefil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site
Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la
version :DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Christian.L;
Si tu as XP, tu peux récupérer les propriétés de n'importe quel fichier
avec:
Sub Test()
MsgBox GetProperties("c:windowsclock.avi"), 64
'MsgBox GetProperties("c:classeur1.xls"), 64
End Sub
Private Function GetProperties(ByVal FullPathFile$) As String
If Dir(FullPathFile) = "" Then Exit Function
Dim PathFile$, FileName$, i%, Info$
Dim oFolder As Object, oItem As Object
i = lPos(FullPathFile, "")
PathFile = Left$(FullPathFile, i - 1)
FileName = Mid$(FullPathFile, i + 1)
Set oFolder = CreateObject("Shell.Application") _
.NameSpace(CStr(PathFile))
If oFolder Is Nothing Then Exit Function
With oFolder
Set oItem = .ParseName(CStr(FileName))
If oItem Is Nothing Then GoTo 1
For i = 0 To 34
If Len(.GetDetailsOf(oItem, i)) Then
GetProperties = GetProperties & .GetDetailsOf(oFolder, i) & ": "
GetProperties = GetProperties & .GetDetailsOf(oItem, i) & vbLf
End If
Next
End With
1: Set oItem = Nothing: Set oFolder = Nothing
End Function
Private Function lPos%(Chain$, Char$)
Dim iPos As Integer
Do
iPos = InStr(lPos + 1, Chain, Char, 1)
If iPos Then lPos = iPos Else Exit Do
Loop
End Function
Et si tu souhaites afficher la fenêtre des propriétés:
Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As ShellExecuteInfo) As Long
Private Type ShellExecuteInfo
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Sub ShowProperties(sFileName)
Dim SEI As ShellExecuteInfo
With SEI
.cbSize = Len(SEI)
.fMask = &H44C
.hwnd = 0
.lpVerb = "properties"
.lpFile = sFileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
ShellExecuteEX SEI
End Sub
Sub TestShow()
ShowProperties "c:Classeur1.xls"
End Sub
MP
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans
le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Christian.L;
Si tu as XP, tu peux récupérer les propriétés de n'importe quel fichier
avec:
Sub Test()
MsgBox GetProperties("c:windowsclock.avi"), 64
'MsgBox GetProperties("c:classeur1.xls"), 64
End Sub
Private Function GetProperties(ByVal FullPathFile$) As String
If Dir(FullPathFile) = "" Then Exit Function
Dim PathFile$, FileName$, i%, Info$
Dim oFolder As Object, oItem As Object
i = lPos(FullPathFile, "")
PathFile = Left$(FullPathFile, i - 1)
FileName = Mid$(FullPathFile, i + 1)
Set oFolder = CreateObject("Shell.Application") _
.NameSpace(CStr(PathFile))
If oFolder Is Nothing Then Exit Function
With oFolder
Set oItem = .ParseName(CStr(FileName))
If oItem Is Nothing Then GoTo 1
For i = 0 To 34
If Len(.GetDetailsOf(oItem, i)) Then
GetProperties = GetProperties & .GetDetailsOf(oFolder, i) & ": "
GetProperties = GetProperties & .GetDetailsOf(oItem, i) & vbLf
End If
Next
End With
1: Set oItem = Nothing: Set oFolder = Nothing
End Function
Private Function lPos%(Chain$, Char$)
Dim iPos As Integer
Do
iPos = InStr(lPos + 1, Chain, Char, 1)
If iPos Then lPos = iPos Else Exit Do
Loop
End Function
Et si tu souhaites afficher la fenêtre des propriétés:
Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As ShellExecuteInfo) As Long
Private Type ShellExecuteInfo
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Sub ShowProperties(sFileName)
Dim SEI As ShellExecuteInfo
With SEI
.cbSize = Len(SEI)
.fMask = &H44C
.hwnd = 0
.lpVerb = "properties"
.lpFile = sFileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
ShellExecuteEX SEI
End Sub
Sub TestShow()
ShowProperties "c:Classeur1.xls"
End Sub
MP
"Christian.L" <christianlecossier@free.fr> a écrit dans le message de
news:%23cEZhve5EHA.2428@TK2MSFTNGP14.phx.gbl...
Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans
le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.
Bonjour Christian.L;
Si tu as XP, tu peux récupérer les propriétés de n'importe quel fichier
avec:
Sub Test()
MsgBox GetProperties("c:windowsclock.avi"), 64
'MsgBox GetProperties("c:classeur1.xls"), 64
End Sub
Private Function GetProperties(ByVal FullPathFile$) As String
If Dir(FullPathFile) = "" Then Exit Function
Dim PathFile$, FileName$, i%, Info$
Dim oFolder As Object, oItem As Object
i = lPos(FullPathFile, "")
PathFile = Left$(FullPathFile, i - 1)
FileName = Mid$(FullPathFile, i + 1)
Set oFolder = CreateObject("Shell.Application") _
.NameSpace(CStr(PathFile))
If oFolder Is Nothing Then Exit Function
With oFolder
Set oItem = .ParseName(CStr(FileName))
If oItem Is Nothing Then GoTo 1
For i = 0 To 34
If Len(.GetDetailsOf(oItem, i)) Then
GetProperties = GetProperties & .GetDetailsOf(oFolder, i) & ": "
GetProperties = GetProperties & .GetDetailsOf(oItem, i) & vbLf
End If
Next
End With
1: Set oItem = Nothing: Set oFolder = Nothing
End Function
Private Function lPos%(Chain$, Char$)
Dim iPos As Integer
Do
iPos = InStr(lPos + 1, Chain, Char, 1)
If iPos Then lPos = iPos Else Exit Do
Loop
End Function
Et si tu souhaites afficher la fenêtre des propriétés:
Private Declare Function ShellExecuteEX Lib "shell32.dll" Alias _
"ShellExecuteEx" (SEI As ShellExecuteInfo) As Long
Private Type ShellExecuteInfo
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Sub ShowProperties(sFileName)
Dim SEI As ShellExecuteInfo
With SEI
.cbSize = Len(SEI)
.fMask = &H44C
.hwnd = 0
.lpVerb = "properties"
.lpFile = sFileName
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = 0
.hInstApp = 0
.lpIDList = 0
End With
ShellExecuteEX SEI
End Sub
Sub TestShow()
ShowProperties "c:Classeur1.xls"
End Sub
MP
"Christian.L" a écrit dans le message de
news:%Bonjour Frédéric
Je m'excuse de répondre par un nouveau post, mais quand je répond dans
le
fil du 13/12/2004, le serveur efface mon message.
Voila,
J'ai essayé une bonne partie du week end les codes de ton site Internet
http://frederic.sigonneau.free.fr/code/Fichiers/ProprietesClasseurFerme.txt
mais je pense que la bibliothèque a été modifiée car c'est la version :
DSO OLE Document Properties Reader 2.0 qui est chargée
au lieu de
DS: OLE Document Properties 1.4 Object Library
En conséquence, a la ligne " Set DSO > > CreateObject("DSOleFile.PropertyReader")"
se produit une erreur d'exécution :
"Erreur d'exécution '429':
Un composant ActiveX ne peut pas créer d'objet"
Encore merci
C.L.