Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ist ein Makro in der Datei vorhanden?

Ist ein Makro in der Datei vorhanden?
Jeziro
Hallo,
Ich habe in einem Ordner unzählige Excel Dateien (Endung .xls) von denen einige Macros enthalten und andere nicht. Ich möchte nun mit Hilfe eines Makros alle im Verzeichnis vorhandenen Dateien daraufhin untersuchen, ob sie ein Makro enthalten und die Dateien löschen, falls dies nicht so ist.
Hat jemand eine Idee, wie man das Vorhandensein eines Makros abfragen kann? Ich habe hierzu noch nirgendwo eine Idee gefunden.
Gruß
Jeziro

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Ist ein Makro in der Datei vorhanden?
18.09.2010 22:29:37
ransi
Hallo
Hier mein Versuch:
Alle Dateien nacheinander öffnen.
VBA-project ohne Schutz dann:
Untersuchen auf Module, Klassenmodule, Userforms.
Klassenmodule untersuchen ob mehr zeilen als die declarationszeilen vorhanden sind.
Wenn 1 von beiden dann die Datei aufnehmen in arr.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit


Public Sub test()
Dim FSO As Object
Dim WB As Workbook
Dim exlApp As Object
Dim vbCom As Object
Dim arr As Variant
Dim I As Integer
On Error GoTo raus
Set exlApp = CreateObject("Excel.Application")
Set FSO = CreateObject("Scripting.FilesystemObject")
Dim Datei As Object
With exlApp
    Set WB = exlApp.Workbooks.Add
    .Calculation = xlCalculationManual
    .EnableEvents = False
    .DisplayAlerts = False
    .ScreenUpdating = False
    Redim arr(1 To FSO.getfolder("C:\Users\Dein_Pfad\makros").Files.Count)
    For Each Datei In FSO.getfolder("C:\Users\Dein_Pfad\makros").Files
        If FSO.getextensionname(Datei) = "xls" Then
            Set WB = .Workbooks.Open(Datei, False, True)
            If WB.VBProject.Protection = 0 Then
                For Each vbCom In WB.VBProject.VBComponents
                    Select Case vbCom.Type
                        Case 1 To 3 'Klassenmodule, Userforms, Standardmodule
                            I = I + 1
                            Set arr(I) = Datei
                            Exit For
                        Case 100
                            If vbCom.CodeModule.CountOfLines > vbCom.CodeModule.CountOfDeclarationLines Then
                                I = I + 1
                                Set arr(I) = Datei
                                Exit For
                            End If
                    End Select
                Next
            End If
            WB.Close False
        End If
    Next
End With
raus:
exlApp.Quit
Redim Preserve arr(I)
MsgBox Join(arr, vbCrLf)
End Sub


ransi
Anzeige
AW: Ist ein Makro in der Datei vorhanden?
19.09.2010 12:03:35
JogyB
Hallo Ransi,
da er die Dateien ohne Makro löschen will, würde ich die mit Projektschutz auch noch in den Array schreiben bzw. für die einen eigenen Array anlegen.
Gruß, Jogy
AW: Ist ein Makro in der Datei vorhanden?
19.09.2010 13:07:38
Jeziro
Vielen Dank für Eure Tipps. Damit komm ich weiter und kann mir was zusammenbasteln.
Gruß
Jeziro

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige