Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen ob Makro in Workbook vorhanden

Forumthread: Prüfen ob Makro in Workbook vorhanden

Prüfen ob Makro in Workbook vorhanden
22.08.2008 10:36:00
Bernhard
Liebes Forum,
Ich muss 2 Versionen von Dateien unterscheiden, eine Version enthält Makros, die neuere Version keine Makros.
Es werden im Code alle Dateien, die in Frage kommen geöffnet - kann man per VBA prüfen, ob die geöffnete Datei Makros enthält?
Vielen Dank und viele Grüße,
Bernhard

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Makro in Workbook vorhanden
22.08.2008 12:44:35
ransi
HAllo Bernhard
Nach dem Öffnen wäre das ein Ansatz:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim WB As Workbook
Dim C As Object
Set WB = Workbooks.Open("D:\Eigene Dateien\Mappe1.xls")
For Each C In WB.VBProject.VBComponents
    Select Case C.Type
        Case 1: MsgBox "Standard Modul vorhanden"
        Case 2: MsgBox "Klassenmodul vorhanden"
        Case 3: MsgBox "Userform vorhanden"
        Case 100: If C.CodeModule.CountOfLines > 1 Then MsgBox "Code in " & C.Name
    End Select
Next
End Sub

ransi

Anzeige
AW: Prüfen ob Makro in Workbook vorhanden
22.08.2008 12:56:03
Rudi
Hallo,

Function HasMakros(wkb As Workbook) As Boolean
'prüft, ob Standardmodule vorhanden sind
'benötigt Verweis auf
'Microsoft Visual Basic for Applications Extensibility 5.3
'Visual Basic for Applications
Dim VB As vbcomponents, VBC As vbComponent
Set VB = wkb.VBProject.vbcomponents
For Each VBC In VB
If VBC.Type = 1 Then
HasMakros = True
Exit Function
End If
Next VBC
HasMakros = False
End Function


Gruß
Rudi

Anzeige
AW: Prüfen ob Makro in Workbook vorhanden
08.09.2008 15:11:05
Bernhard
Vielen Dank euch beiden für die wertvolle Hilfe!! :-)
Viele Grüße,
Bernhard
;
Anzeige
Anzeige

Infobox / Tutorial

Prüfen, ob ein Makro in einem Workbook vorhanden ist


Schritt-für-Schritt-Anleitung

Um zu prüfen, ob in einem geöffneten Workbook Makros vorhanden sind, kannst du den folgenden VBA-Code verwenden. Dieser Code öffnet das Workbook und überprüft, ob Standardmodule vorhanden sind.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deine_datei.xlsm)" > Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Function HasMakros(wkb As Workbook) As Boolean
       'prüft, ob Standardmodule vorhanden sind
       'benötigt Verweis auf Microsoft Visual Basic for Applications Extensibility 5.3
       Dim VB As vbcomponents, VBC As vbComponent
       Set VB = wkb.VBProject.vbcomponents
       For Each VBC In VB
           If VBC.Type = 1 Then
               HasMakros = True
               Exit Function
           End If
       Next VBC
       HasMakros = False
    End Function
  4. Um das Workbook zu öffnen und die Funktion zu verwenden, schreibe einen weiteren Sub:

    Sub CheckMakros()
       Dim wb As Workbook
       Set wb = Workbooks.Open("D:\Eigene Dateien\Mappe1.xls")
       If HasMakros(wb) Then
           MsgBox "Makros sind vorhanden."
       Else
           MsgBox "Keine Makros gefunden."
       End If
       wb.Close
    End Sub
  5. Führe CheckMakros aus, um das Workbook zu öffnen und die Makros zu überprüfen.


Häufige Fehler und Lösungen

  • Fehler: "Projekt nicht gefunden"

    • Stelle sicher, dass du den Verweis auf "Microsoft Visual Basic for Applications Extensibility 5.3" in den VBA-Verweisen gesetzt hast. Gehe dazu auf Extras > Verweise und aktiviere das entsprechende Kontrollkästchen.
  • Fehler: Zugriff auf VBProject nicht erlaubt

    • Dies kann passieren, wenn die Sicherheitseinstellungen in Excel zu hoch sind. Stelle sicher, dass du in den Excel-Optionen unter Trust Center die Makrosicherheit entsprechend anpasst.

Alternative Methoden

Eine andere Methode, um zu überprüfen, ob ein Workbook Makros enthält, ist die Verwendung von VBComponents. Diese Methode bietet dir mehr Kontrolle und Flexibilität.

  1. Verwende den folgenden VBA-Code:

    Sub CheckMacroComponents()
       Dim wb As Workbook
       Dim component As Object
       Set wb = Workbooks.Open("D:\Eigene Dateien\Mappe1.xls")
    
       For Each component In wb.VBProject.VBComponents
           If component.Type = 1 Then
               MsgBox "Standardmodul vorhanden: " & component.Name
           End If
       Next component
    
       wb.Close
    End Sub
  2. Dieser Code informiert dich über jedes gefundene Standardmodul in der Arbeitsmappe.


Praktische Beispiele

Angenommen, du hast zwei Versionen einer Datei: Mappe1.xls mit Makros und Mappe2.xls ohne. Du kannst das oben genannte Skript verwenden, um beide Dateien nacheinander zu überprüfen und zu bestätigen, welche Version Makros enthält.


Tipps für Profis

  • Automatisierung: Du kannst den Prozess automatisieren, indem du eine Schleife schreibst, die über eine Liste von Dateipfaden iteriert.
  • Sicherheitsüberlegungen: Achte darauf, dass du nur vertrauenswürdige Dateien öffnest, um Sicherheitsrisiken zu vermeiden.
  • Debugging: Nutze Debug.Print innerhalb deiner Funktionen, um Informationen während der Ausführung zu protokollieren.

FAQ: Häufige Fragen

1. Wie kann ich prüfen, ob eine Arbeitsmappe VBA-Projekt-Elemente hat?
Verwende die VBComponents-Sammlung, um alle Komponenten in einem Workbook zu durchlaufen.

2. Welche Excel-Version benötige ich für diese Methoden?
Die vorgestellten Methoden sind in Excel 2010 und neueren Versionen anwendbar. Stelle sicher, dass die VBA-Automatisierung aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige