Avatar billede koppelgaard Praktikant
25. juni 2007 - 11:17 Der er 8 kommentarer og
1 løsning

Liste over makroer i en Excelmappe

Jeg har en Excelmappe, hvor der efterhånden er ved at være et større antal makroer.
Er der nogen måde automatisk at få generet en liste over samtlige public makroer ?
Avatar billede be_nice Juniormester
25. juni 2007 - 11:39 #1
Hej koppelgaard,

Tryk på "ALT" + "F8" og herefter "Rediger"

Her findes din liste over makroer i din projektmappe.

Mvh.
Be_Nice
"Hver for sig kan vi alle en smule - men sammen kan vi det hele :o)"
Avatar billede koppelgaard Praktikant
25. juni 2007 - 12:16 #2
Tak for svaret, men det var nu ikke helt det jeg søgte.
Jeg vil gerne have en liste vha VBA - f.eks. returneret i et array.

Michael
Avatar billede kabbak Professor
25. juni 2007 - 19:40 #3
Avatar billede learningvba Nybegynder
26. juni 2007 - 07:57 #4
Det bedste sted jeg har fundet med information og eksempler om hvordan man kan tilgå makroer m.m.:
http://www.cpearson.com/excel/vbe.htm
Avatar billede koppelgaard Praktikant
26. juni 2007 - 10:01 #5
tak for jeres svar - jeg ser nærmere på det i aften
Avatar billede koppelgaard Praktikant
28. juni 2007 - 08:57 #6
Fantastisk, flot, forrygende og fabelagtigt!
de 100 point er dine lerningvba
Nedenstående gør hvad jeg ønsker.
Man skal bare  huske at ændre sikkerhedsnievuet og trække den reference som foreskrives.
Sender du et svar ?

Michael

Function ListAllProcsInProject(VBP As VBIDE.VBProject, Procs() As String) As Long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ListAllProcsInProject
' This function populates the string array Procs with strings that identify
' a specific procedure. Each element of Procs is a string of the form:
'      ModuleName:ProcType:ProcedureName
' You can use the Split function to break this string into separate elements
' using the ':' character as the delimiter.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Dim ProcName As String
Dim ProcType As VBIDE.vbext_ProcKind
Dim ProcTypeString As String
Dim ProcNdx As Long
Dim ProcCounter As Long
Dim ProcString As String

If VBP.Protection = vbext_pp_locked Then
    Exit Function
End If

Erase Procs
For Each VBComp In VBP.VBComponents
    Set CodeMod = VBComp.CodeModule
    LineNum = CodeMod.CountOfDeclarationLines + 1
    ProcName = CodeMod.ProcOfLine(LineNum, ProcType)
    Do Until LineNum >= CodeMod.CountOfLines
        ProcNdx = ProcNdx + 1
        ReDim Preserve Procs(1 To ProcNdx)
        Select Case True
            Case ProcType = vbext_pk_Get
                ProcTypeString = "GET"
            Case ProcType = vbext_pk_Let
                ProcTypeString = "LET"
            Case ProcType = vbext_pk_Proc
                ProcTypeString = "PROC"
            Case ProcType = vbext_pk_Set
                ProcTypeString = "SET"
        End Select
        ProcString = VBComp.Name & ":" & ProcTypeString & ":" & ProcName
        Procs(ProcNdx) = ProcString
        ProcCounter = ProcCounter + 1
        LineNum = LineNum + CodeMod.ProcCountLines(ProcName, ProcType) + 1
        ProcName = CodeMod.ProcOfLine(LineNum, ProcType)
    Loop
Next VBComp

ListAllProcsInProject = ProcCounter

End Function

'You can loop through the Procs array and use the Split function to break each string into its components, as shown in the procedure below.

Sub ListProcsInProject()

Dim Procs() As String
Dim ProcCount As Long
Dim VBP As VBIDE.VBProject
Dim Ndx As Long
Dim Arr As Variant
Dim ModuleName As String
Dim ProcType As String
Dim ProcName As String

ProcCount = ListAllProcsInProject(ThisWorkbook.VBProject, Procs)
Debug.Print "Procs Found: " & CStr(ProcCount)
If ProcCount > 0 Then
    For Ndx = LBound(Procs) To UBound(Procs)
        Arr = Split(Procs(Ndx), ":")
        ModuleName = Arr(LBound(Arr))
        ProcType = Arr(LBound(Arr) + 1)
        ProcName = Arr(LBound(Arr) + 2)
        Debug.Print "Module: " & ModuleName, "Type: " & ProcType, "Name: " & ProcName
    Next Ndx
Else
    Debug.Print "No procs found"
End If

End Sub
Avatar billede learningvba Nybegynder
29. juni 2007 - 07:34 #7
Gi' dem til Pearson Software Consulting :-) eller tag dem selv, det eneste jeg gjorde var at sætte dig på sporet.
Avatar billede koppelgaard Praktikant
04. juli 2007 - 16:05 #8
jamen tak ! Jeg snupper dem selv.
Avatar billede koppelgaard Praktikant
19. juli 2007 - 08:15 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester