Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
500to504
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
500to504
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

nochmals Dateien mit Makros für Boris

nochmals Dateien mit Makros für Boris
15.10.2004 19:33:20
Rolf
Hallo Boris und weitere Interessenten,
aus reinem Eigennutz habe ich deine gestrige Aufgabenstellung
mal auf meine Bedürfnisse angepasst.
Ich denke, es kommt deinen Anforderungen entgegen.
Bitte den kompletten Code in ein Modulblatt kopieren
und mit "start_makro_identifikation" ausführen.
m.d.B. um feedback
Rolf
'Dateien mit Makros identifizieren
'by Rolf Beißner
'10.2004
Option Explicit
Option Base 1
Dim awb As Workbook 'Startmappe
Dim nws As Worksheet 'neues Sheet
Dim fl As Object 'geöffnete Datei
Dim verz As String 'abzuarbeitendes Verzeichnis
Dim k As Long 'Satzzähler
Dim p As Long 'Summenposition
'Startmakro

Sub start_makro_identifikation()
Call parameter
Call ShowFileList(verz)
Call gliedern
End Sub

'Parameter definieren

Sub parameter()
Dim i As Integer
Dim A As Variant
verz = Ordner_def                   'dank K.Rola
ChDrive verz
ChDir verz
Application.ScreenUpdating = False
Set awb = ActiveWorkbook
Set nws = Worksheets.Add
k = 1
A = Array("Gliederungsebene", "Verzeichnis", "Datei", "Komponente", "Kompon.-Typ", "Anz.Codezeilen")
For i = 1 To 6
nws.Cells(k, i) = A(i)
Next
End Sub

'Excel-Dateien öffnen

Sub ShowFileList(folderspec) 'Argumentübergabe z.B "C:\excel\Arbeitsdateien"
Dim fs, f, fc As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
For Each fl In fc
If fl.Type = "Microsoft Excel-Arbeitsblatt" Then
k = k + 1
p = k
nws.Cells(k, 1) = 1
nws.Cells(k, 2) = folderspec
nws.Cells(k, 3) = fl.Name
Workbooks.Open (fl.Name)
projkomponenten
Application.DisplayAlerts = False
Workbooks(fl.Name).Close
End If
Next
End Sub

'Projektkomponenten auflisten

Sub projkomponenten()
Dim vb, vbc As Object
Dim cl As Integer
cl = 0
Set vb = ActiveWorkbook.VBProject.VBComponents
For Each vbc In vb
k = k + 1
nws.Cells(k, 1) = 2
nws.Cells(k, 4) = vbc.Name
nws.Cells(k, 5) = vbc.Type
nws.Cells(k, 6) = vbc.codemodule.countoflines
cl = cl + vbc.codemodule.countoflines
nws.Cells(p, 6) = cl
Next
End Sub

'Gliederung aus den Angaben in Spalte 1 generieren

Sub gliedern()
Dim e, h As Integer
Dim zellen As Range
[a1].ClearOutline
h = Application.Max(Columns(1))     'höchste Ebene
For Each zellen In ActiveSheet.UsedRange.Offset(1, 0).Resize(, 1)
zellen.Select
If zellen.Value = "" Then
e = 0
Else
e = zellen.Value
End If
If e = 0 Then e = h + 1         'definiert Stufe h+1
With Rows(zellen.Row)
.OutlineLevel = e
End With
Next
With ActiveSheet.Outline
.SummaryRow = xlAbove
.ShowLevels rowLevels:=1
End With
Cells.EntireColumn.AutoFit
End Sub

'aus Herber-Forum von K.Rola am 11.10.04

Function Ordner_def()
Dim objFolderItem As Object, strPath As String, objShell As Object
Dim varDefaultPath As Variant 'wichtig  muss Variant sein!
Dim objFolder As Object
varDefaultPath = "C:\"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0&, "Ordner auswählen...", 0&, varDefaultPath)
If objFolder Is Nothing Then End
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
Ordner_def = strPath
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nochmals Dateien mit Makros für Boris
Bert
Ohne getestet zu haben musst du noch eine Abfrage einbauen, ob das VB-Projekt geschützt ist, weil dann ein Auslesen der Komponenten nicht möglich ist.
bert
AW: nochmals Dateien mit Makros für Boris
15.10.2004 22:28:40
Rolf
Hallo Bert,
hast du eine Idee, wie die Abfrage aussehen soll,
damit die Komponenten eines geschützten Projekts
angezeigt werden?
F.G.
Rolf
AW: nochmals Dateien mit Makros für Boris
Bert
Werden sie nicht, solange das Projekt geschützt ist, hast du darauf keinen Zugriff.
Wär auch noch schöner, einfach extern den Code auslesen.
Bert
AW: nochmals Dateien mit Makros für Boris
16.10.2004 10:36:13
Rolf
Hallo Bert,
wie soll ich denn dann deine Aufforderung
zum Einbau einer diesbezüglichen Abfrage verstehen?
Freundliche Grüße
Rolf
PS
Würde mich interessieren, in welcher Region du lebst -
aus rein statistischen Gründen
Anzeige
AW: nochmals Dateien mit Makros für Boris
Bert
Das kommt doch darauf an, worum es eigentlich geht. Wenn du die Komponenten auslesen willst, gehts nur, wenn das Projekt nicht geschützt ist. Ist es geschützt und du versuchst darauf zuzugreifen, gibts einen Fehler. Um den zu vermeiden wäre eine Abfrage nach dem Schutz schon mal sinnvoll.
Willst du nur wissen, ob Code vorhanden ist, wäre das Vorhandensein eines Schutzes zumindest ein Indiz dafür, dass Code vorhanden ist, ansonsten wäre der Schutz sinnlos oder vielleicht aus Versehen gesetzt.
Lebe in Berlin.
Bert
Wo bleibt Boris?
16.10.2004 16:30:12
Rolf
Hallo Bert,
das leuchtet mir ein.
Die Prozedur "Projektkomponenten auflisten"
sieht jetzt so aus:
'Projektkomponenten auflisten

Sub projkomponenten()
On Error GoTo protected
Dim vb, vbc As Object
Dim cl As Integer
cl = 0
Set vb = ActiveWorkbook.VBProject.VBComponents
For Each vbc In vb
k = k + 1
nws.Cells(k, 1) = 2
nws.Cells(k, 4) = vbc.Name
nws.Cells(k, 5) = vbc.Type
nws.Cells(k, 6) = vbc.codemodule.countoflines
cl = cl + vbc.codemodule.countoflines
nws.Cells(p, 6) = cl
Next
Exit Sub
protected:
If Err.Number = 50289 Then
With nws.Cells(k, 6)
.Value = "Code ist geschützt"
.Font.Bold = True
.Font.ColorIndex = 3
End With
Else
MsgBox "Ein unbekannter Fehler ist aufgetreten" & Chr(10) & _
"Das Programm wird beendet"
End
End If
End Sub

Danke + herzliche Grüße
Rolf
Anzeige
Hier isser...
Boris
Hi Rolf,
...allerdings nur auf kurzer Stipvisite.
Find ich klasse, wie du dich mit dem Thema beschäftigst - ich werde mir diesen Thread noch in Ruhe anschauen - nur leider fehlt mir derzeit die Zeit dazu.
Danke bisweilen und Grüße
Boris

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige