Richards Firma verwendet, wie viele andere auch, ziemlich oft Excel. Tatsächlich haben sie Tausende und Abertausende von Excel-Arbeitsmappen, die sie im Laufe der Jahre gesammelt haben. Richard muss herausfinden, in welchen dieser Arbeitsmappen VBA-Makros enthalten sind, ohne dass jede Arbeitsmappe einzeln geöffnet und überprüft werden muss. Er fragt sich, ob es einen einfachen Weg gibt, dies zu tun.

Eine ziemlich vereinfachte Möglichkeit, alle Ihre Arbeitsmappen mit Makros zu finden, besteht darin, nach Dateien zu suchen, die die XLSM- oder XLSB-Erweiterungen verwenden.

Arbeitsmappen, die Makros enthalten, müssen mit diesen Erweiterungen in Dateien gespeichert werden. Obwohl es nicht 100% narrensicher ist, ist es ein guter Anfang.

Sie können auch die Suchfunktionen von Windows (außerhalb von Excel) verwenden

und suchen Sie nach einer Datei, die den Text „End Sub“ oder „End Function“ enthält. Dadurch werden potenzielle Kandidaten-Arbeitsmappen schnell identifiziert, da jedes VBA-Verfahren am Ende eine dieser beiden Anweisungen verwenden muss.

Wenn Sie ältere Arbeitsmappen verwenden (solche, die im Dateiformat von Excel 2003 entwickelt wurden), müssen Sie tatsächlich in jede der Arbeitsmappen schauen. Dies kann programmgesteuert erfolgen. Dies bedeutet, dass Sie möglicherweise ein Makro haben, das jede Arbeitsmappe in einem Ordner öffnet und überprüft, ob darin Makros enthalten sind.

Sie können beispielsweise ein Makro erstellen, das alle Dateien in einem Verzeichnis durchläuft und feststellt, ob es sich bei der Datei um eine Excel-Arbeitsmappe handelt. Anschließend kann die Datei geöffnet und überprüft werden, ob sich ein VBA-Projekt darin befindet.

Sub FindMacros()

Dim sPath As String     Dim sFile As String     Dim sFoundFiles As String

'specify directory to use - must end in "\"

sPath = "C:\MyData\Excel Data\"



sFile = Dir(sPath)

Do While sFile <> ""

If InStr(sFile, ".xls") > 0 Then             Workbooks.Open (sPath & sFile)

If Workbooks(sFile).HasVBProject Then                 sFoundFiles = sFoundFiles & sFile & vbCrLf             End If             Workbooks(sFile).Close (False)

End If         sFile = Dir     ' Get next filename     Loop     If Len(sFoundFiles) = 0 Then         MsgBox "No workbooks found that contain macros"

Else         sFoundFiles = "The following workbooks contain macros:" & _           vbCrLf & vbCrLf & sFoundFiles         MsgBox sFoundFiles     End If End Sub

In diesem Beispiel wird mithilfe der HasVBProject-Eigenschaft (die in Excel 2007 in das Excel-Objektmodell eingeführt wurde) ermittelt, ob die Datei Makros enthält oder nicht. Wenn der Vorgang abgeschlossen ist, zeigt das Makro ein Meldungsfeld an, in dem die Arbeitsblätter aufgeführt sind, die Makros enthalten.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (12466) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.

Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: