vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Word/Excel - Makronamen auflisten 
Autor: RalfH
Datum: 19.04.08 16:05

Servus,

für Excelfiles geht das bsw so:
Option Explicit
 
Private lNameRow As Long
 
Sub GetMacros()
  ThisWorkbook.Worksheets(1).Cells.ClearContents
  ThisWorkbook.Worksheets(1).Cells(1, 1) = "MakroName"
  ThisWorkbook.Worksheets(1).Cells(1, 2) = "MakroTyp"
  ThisWorkbook.Worksheets(1).Cells(1, 3) = "Parameter"
  ThisWorkbook.Worksheets(1).Cells(1, 4) = "Rückgabetyp"
 
  lNameRow = 2
 
  ReadMacroName ThisWorkbook.Name
End Sub
 
Sub ReadMacroName(ByVal sFile As String)
  On Error GoTo ShowError
 
  Dim lRows As Long, sCode As String, lModules As Long, x As Long, i As Long
  Dim P As Long, PName As Long
  Dim sName As String, sType As String, sArg As String, sRetType As String
 
  With Workbooks(sFile).VBProject.VBE
    lModules = .CodePanes.Count
    If lModules > 0 Then
      For x = 1 To lModules
        lRows = .CodePanes(x).CodeModule.CountOfLines
        If lRows > 0 Then
          For i = 1 To lRows
            sCode = Trim(.CodePanes(x).CodeModule.Lines(i, 1))
 
            PName = 0
 
            If (UCase(Left(sCode, 4)) = "SUB ") Then
              PName = 5
            ElseIf (UCase(Left(sCode, 11)) = "PUBLIC SUB ") Then
              PName = 11
            ElseIf (UCase(Left(sCode, 9)) = "FUNCTION ") Then
              PName = 10
            ElseIf (UCase(Left(sCode, 16)) = "PUBLIC FUNCTION ") Then
              PName = 17
            End If
 
            If PName > 0 Then
              P = InStr(1, sCode, "(")
 
              sName = Trim(Mid(sCode, PName, P - PName))
              sType = Trim(Left(sCode, PName - 1))
              sArg = Trim(Mid(sCode, P, Len(sCode)))
 
              P = InStr(1, sArg, ")")
              sRetType = Trim(Mid(sArg, P + 1, Len(sArg)))
              sArg = Trim(Mid(sArg, 2, P - 2))
 
              If sArg = "" Then sArg = "-"
              If sRetType = "" Then
                If UCase(Right(sType, 8)) = "FUNCTION" Then
                  sRetType = "- [As Variant]"
                Else
                  sRetType = "-"
                End If
              End If
 
              ThisWorkbook.Worksheets(1).Cells(lNameRow, 1) = sName
              ThisWorkbook.Worksheets(1).Cells(lNameRow, 2) = sType
              ThisWorkbook.Worksheets(1).Cells(lNameRow, 3) = sArg
              ThisWorkbook.Worksheets(1).Cells(lNameRow, 4) = sRetType
 
              lNameRow = lNameRow + 1
            End If
          Next i
        End If
      Next x
    End If
  End With
 
  Exit Sub
 
ShowError:
  MsgBox "Fehler!" & vbNewLine & Err.Description & vbNewLine & vbNewLine & _
    "Sie haben wahrscheinlich die VBA-Projekt-Sicherheitseinstellungen nicht" & _
    "korrekt eingestellt!" & vbNewLine & vbNewLine & _
    "Menü" & vbNewLine & _
    "--> Extras/Makro/Sicherheit" & vbNewLine & vbNewLine & _
    "Registerseite" & vbNewLine & _
    "--> Vertrauenswürdige Quellen" & vbNewLine & vbNewLine & _
    "Option aktivieren" & vbNewLine & _
    "--> Zugriff auf Visual Basic Projekt vertrauen", vbExclamation
End Sub

Viel Spass,
R@lf

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Word/Excel - Makronamen auflisten1.703Garfield000117.04.08 00:18
Re: Word/Excel - Makronamen auflisten1.380RalfH19.04.08 16:05
Re: Word/Excel - Makronamen auflisten1.225Garfield000119.04.08 20:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel