Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function
Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+
Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function
Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function
Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function
Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+
Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function
Bonsour® Clément Marcotte,
en effet cela inscrit les noms de macro dans la zone commentaire...
mais je suis surpris que tu n'ai point essayé la proc de Stephen
Bullen
http://www.bmsltd.ie/DLCount/DLCount.asp?fileÊllTree97.exe
qui je t'assure fait un rapport circonstancié des macros d'un
classeur avec
l'arborescence des appels
ainsi que les liens proc appelée proc appelante...(nombre parent,
child)
je m'en sers depuis quelques temps déja pour mes dossiers de
maintenance,
il suffit d'activer la proc call tree après une modification de ton
projet
puis enregistrer le rapport à jour !!(doc_appli_truc_maj_le : )
Nb: bien que la proc soit marquée pour EXCEL 97( elle ne traite que
les
modules standards) et qu'il y ai un message d'erreur lors de
l'installation
il suffit d'activer le classeur à traiter
activer la xla qui est installée par défaut dans c:program
filesBMScall
tree 97calltree97.xla
(mieux se serait dans xlstart ;o))))
il apparait dans le menu excel > Outils > Procedure Call tree
j'effectue une visite régulière au cas ou Stephen adapterai pour xl
2000 et
+
;o)))
@+Bonjour,
Juste un petit "rapport d'étape" sur l'avancement de mon projet.
Je ne suis pas encore rendu aux dates, mais cela progresse.
En fait, mon idée était (est) d'utiliser les propriétés des
fichiers
Office pour faire une liste facilement accessible (Clic-droit
dans
l'Explorateur Windows - Propriétés) des procédures VBA pouvant se
trouver dans un fichier particulier. (À force de répondre aux
questions et de ne pas vouloir encombrer mes classeurs existants
de
macros qui ne fonctionnent pas, j'ai accumulé un tas de classeurs
avec
des macros, et je m'aperçois que des fois je refais du déjà fait.)
Dans VBA seul, on peut seulement lire les propriétés "de base", et
on
peut lire/écrire (du moins je pense) les propriétés "custom".
Par contre, avec DSOFile,
http://support.microsoft.com/default.aspx?scid=kb;FR;q224351
on peut lire/écrire toutes les propriétés. Mais, car il y a
toujours
un mais, le fichier doit être fermé pour que DSOFile puisse agir,
et
être ouvert pour que les procédures de manipulation des modules
puissent être utilisées.
Avec un peu de gymnastique, des procédures du site de Frédéric, un
exemple microsoftien pour VB et DSOFile; j'ai réussi à mettre dans
la
propriété "Commentaires" d'un classeur Excel, les procédures VBA
de ce
classeur.
Pour ceux que cela intéresse, voici donc les procédures, dans
leur
état actuel. C'est la fonction microsoftienne (allégée)
OpenDocumentProperties qui permet de lire l'ensemble des
propriétés.
Ne pas oublier de cocher les références à la bibliothèque
Extensibility et à la bibliothèque DSOFile. Les noms sont donnés
en
commentaires dans la macro. Cependant, la bibliothèque DSOFile ne
sera
pas forcément dans Windowssystem. Chez moi, le programme
d'installation l'a mise (ou je l'ai peut-être fait mettre là),
dans
C:DSOFile. Il se pourrait donc que vous deviez vous promener un
peu
(parcourir) sur votre disque pour la retrouver et l'ajouter aux
références.
Sub ListeMacrosModule()
'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Application Extensibility 5.3
'et à la bibliothèque DsoFile (DSOleFile.CustomProperty)
'renvoie dans les propriétés du classeur la liste
'des procédures et
'fonctions d'un module standard
Dim oCustProp As DSOleFile.CustomProperty, oFilePropReader
Dim oDocProp As DSOleFile.DocumentProperties
Dim VBCodeMod As CodeModule, liste As Object
Dim StartLine As Long
Dim ProcName As String
Dim Wbk As Workbook
Dim i As Long, fenetre, lenom
Dim letexte As String, lefichier As String
Set oFilePropReader = New DSOleFile.PropertyReader
lefichier = "C:Mes Documentstestregex1.xls"
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
letexte = oDocProp.Comments
Set oDocProp = Nothing
Set Wbk = Workbooks.Open(lefichier)
For Each fenetre In Wbk.VBProject.VBComponents
lenom = fenetre.Name
Set VBCodeMod = Wbk.VBProject.VBComponents(lenom).CodeModule
i = 1
With VBCodeMod
StartLine = .CountOfDeclarationLines + 1
Do Until StartLine >= .CountOfLines
letexte = letexte & .ProcOfLine(StartLine, vbext_pk_Proc) &
vbNewLine
StartLine = StartLine +
.ProcCountLines(.ProcOfLine(StartLine, _
vbext_pk_Proc), vbext_pk_Proc)
i = i + 1
Loop
End With
Next
Wbk.Close
Set Wbk = Nothing
Set VBCodeMod = Nothing
Set oDocProp = oFilePropReader.GetDocumentProperties(lefichier)
oDocProp.Comments = letexte
Set oDocProp = Nothing
End Sub
Public Function OpenDocumentProperties(lefichier) As Boolean
Dim oCustProp As DSOleFile.CustomProperty
Dim sTmp As String
' If the user cancels the dialog, exit out.
If Len(sFile) = 0 Then Exit Function
' Here is where we load the document properties for the file
' selected. The function will return a DocumentProperties object.
' We must have exclusive access to the storage of the file. If
' another app has the file open, this function will raise an
error
Set oDocProp = oFilePropReader.GetDocumentProperties(sFile)
On Error Resume Next
cProp.PresentationFormat
' The HasMacros property only works for Excel & Word files
' and raises error if document is not one of these. Ignore
' any error for this sample.
Dim sItem As String
sItem = CStr(oDocProp.HasMacros)
If Err Then sItem = "<unknown>"
lstNormalProps.AddItem "Macros Attached: " & sItem
' We'll get the thumnail image of the document (if available)...
Dim oPicDisp As StdPicture
Set oPicDisp = oDocProp.Thumbnail
If oPicDisp Is Nothing Then
chkShowPreview.Enabled = False
Else
Set picPreview.Picture = oPicDisp
chkShowPreview.Enabled = True
End If
On Error GoTo Err_Trap
txtCustName.Text = ""
txtCustValue.Text = ""
lstCustType.ListIndex = 0
' The operation was successful.
OpenDocumentProperties = True
Exit Function
Err_Trap:
' Trap common errors returned from componenet...
Select Case Err.Number
Case &H80040203
' The file is open by another program
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040202
' The file selected is not an OLE structured storage file
MsgBox Err.Description & " Please choose another file."
Err.Clear: Resume GetFileFromUser
Case &H80040201
' DCOM is not installed -- fall through to MsgBox below
End Select
MsgBox "Error: " & Err.Description, vbCritical, "Err: " &
CStr(Err.Number)
End Function