Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

Makros in Ordner auflisten

Makros in Ordner auflisten
Beffen
Mahlzeit ihr Experten-Team.
Ich suche eine Möglichkeit alle Makros aufzulisten, die sich in Word-/ oder Exceldateien eines frei auswählbaren Verzeichnisses befinden. Bestenfalls in eine neue Excel- oder Worddatei.
Dieses Makro sollte auf Excel97 genauso, wie auf Excel 2007 funktionieren. Leider gibts ja die FileSearch-Funktion nicht mehr in xl2007....
Wie kann das trotzdem realisiert werden?
Hat da jemand Rat?
Gruß Beffen

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makros in Ordner auflisten
13.04.2011 06:40:40
marcl
Halle Beffen,
als Möglichkeit, die aber immer nur in einem Verzeichnis funktioniert, gebe es:
Dim Datei
Datei = Dir("Dein Pfad\")
do while datei ""
....
Datei = Dir
loop
Gruß
Marcel
AW: Makros in Ordner auflisten
13.04.2011 08:58:30
Beffen
Guten Morgen Marcel und Danke für deine Antwort,
wenn ich das richtig interpretiere, füllst Du "Datei" mit dem Inhalt des Pfades (warum geht nicht C:\ als Pfad und die Unterordner werden durchsucht?). Das machst du so lange, wie noch nicht alles ausgelesen wurde (do while datei ""). Deine 3 Punkte deuten an, dass ich nun mit der Variablen machen kann, was ich möchte und das loop indiziert die wiederholung der Schleife, bis der gesamte Pfad durchsucht wurde.
Soweit zu deinem Code. Hoffe das ist richtig so. Allerdings benötige ich neben der Anzeige der Datei in einer Excelzelle auch die Information ob ein Makro drin ist, wie es heisst. Gegebenenfalls sollte es auch möglich sein, eine Datei mehrfach aufzulisten, wenn mehrere Makros darin enthalten sind...
Es geht mir also um dein "..." - Wie kann ich Makroinformationen aus einer gelisteten Datei heraussuchen?
Gruß und Danke!!!!
Beffen
Anzeige
Makroinformationen
13.04.2011 09:21:04
Rudi
Hallo,
dazu muss dem Zugriff auf das VBA-Projekt vertraut werden und das Projekt darf nicht geschützt sein.
Beides gegeben?
Gruß
Rudi
AW: Makroinformationen
13.04.2011 09:32:45
Beffen
Hallo Rudi,
nehmen wir das mal als gegeben an. Ich weiss nicht, wie ich das Abfragen kann...
Haste eine Idee?
Gruß Beffen
AW: Makroinformationen
13.04.2011 10:44:29
Rudi
Hallo,
dann teste mal
In ein Modul:
Option Explicit
Sub GetMakroList()
Dim FSO As Object, oFolder As Object
Dim strFolder As String
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Ordner wählen"
.AllowMultiSelect = False
If .Show = -1 Then
strFolder = .SelectedItems(1)
End If
End With
If strFolder = "" Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(strFolder)
ThisWorkbook.Sheets(1).Cells.Clear
prcFiles oFolder
prcSubFolders oFolder
End Sub
Private Sub prcFiles(oFolder)
Dim oFile As Object, wkb As Workbook
For Each oFile In oFolder.Files
If LCase(oFile) Like "*.xls" Then
Set wkb = Workbooks.Open(oFile)
MakroListe wkb
wkb.Close False
End If
Next
End Sub
Private Sub prcSubFolders(oFolder)
Dim oSubFolder As Object
For Each oSubFolder In oFolder.SubFolders
prcFiles oSubFolder
prcSubFolders oSubFolder
Next
End Sub
Private Sub MakroListe(wkb As Workbook)
Dim vbc As Object, iCounter As Long, wks As Worksheet, sLine As String
Dim blnMakro As Boolean
Set wks = ThisWorkbook.Sheets(1)
On Error GoTo errhandler
For Each vbc In wkb.VBProject.VBComponents
With vbc.CodeModule
For iCounter = 1 To .CountOfLines
sLine = Trim(.Lines(iCounter, 1))
If sLine Like "Sub*(*)*" _
Or sLine Like "Public Sub*(*)*" _
Or sLine Like "Private Sub*(*)*" _
Or sLine Like "Function*(*)*" _
Or sLine Like "Public Function*(*)*" _
Or sLine Like "Private Function*(*)*" Then
blnMakro = True
With wks.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0) = wkb.FullName
.Offset(1, 1) = sLine
End With
End If
Next iCounter
End With
Next vbc
If Not blnMakro Then
With wks.Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0) = wkb.FullName
.Offset(1, 1) = "No Makro"
End With
End If
errhandler:
If Err.Number > 0 Then
MsgBox Err.Description, , "Fehler"
End If
End Sub

Gruß
Rudi
Anzeige
Super, Danke!
13.04.2011 14:02:52
Beffen
Wow.......Das muss ich erstmal verdauen... so schnell.....
Krass!!
Ich danke Dir. Das reicht mir vollkommen so! Tausend Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige