Anzeige
Archiv - Navigation
1504to1508
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

Anlistung von Makros

Anlistung von Makros
27.07.2016 16:20:15
Makros
Hallo Cracks, liebe Leute,
ich komme heute mit meinem zweiten Problem in diesem herrlichen Forum.
Ich möchte gerne von einer Excel-Tapete die darin verwendeten Makros inhaltlich
in einem zweiten Sheet anlisten.
Bisher ist es mir gelungen, aus dem Netz einen Code abzuschreiben, der schon so etwas
ähnliches produziert.
Der Code sieht so aus:

Sub ExportAllVBA()
Dim VBComp As VBIDE.VBComponent
Dim Sfx As String
For Each VBComp In ActiveWorkbook.VBProject.VBComponents
Select Case VBComp.Type
Case vbext_ct_ClassModule, vbext_ct_Document
Sfx = ".txt"
Case vbext_ct_MSForm
Sfx = ".txt"
Case vbext_ct_StdModule
Sfx = ".txt"
Case Else
Sfx = ""
End Select
If Sfx  "" Then
VBComp.Export _
Filename:="D:\Test\" & _
VBComp.Name & Sfx
End If
Next VBComp
End Sub

Der riesige Nachteil ist, dass dabei die Makros jeder einzelnen Tabellen in einer separaten
Textdatei ausgegeben werden und ich habe leider so wenig Ahnung, dass es mir nicht
gelingt, daraus etwas für mich passendes zu machen.
Ich stell mir eine Tabelle vor, die pro gefundener Makrozeile spaltenweise so aufgeteilt ist:
Name(tabelle1) Namecode(Reiterbezeichnung) Zeile(Sub Test())
und alle Makros des Tabellenblatts enthält.
Kann mir jemand helfen? Das wäre wirklich toll.
Besten Gruß
Friedel

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

Betreff
Datum
Anwender
Anzeige
Auflistung von Makros
29.07.2016 16:55:54
Makros
Hallo Friedel,
wenn ich dich richtig verstanden habe, dann so:
Sub b()
Dim ws As Worksheet, oComp As Object
Dim lZeile As Long, lSpalte As Long, CodeZeile As Long
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Code")
If Err.Number = 9 Then
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = "Code"
Err.Clear
End If
On Error GoTo 0
ws.Cells.Clear
lSpalte = 1
For Each oComp In ThisWorkbook.VBProject.VBComponents
lZeile = 1
ws.Cells(lZeile, lSpalte) = oComp.Name
For CodeZeile = 1 To oComp.CodeModule.CountOfLines
lZeile = lZeile + 1
ws.Cells(lZeile, lSpalte) = oComp.CodeModule.Lines(CodeZeile, 1)
Next
lSpalte = lSpalte + 1
Next
ws.Columns.AutoFit
End Sub
mfg Anton
Anzeige
AW: Auflistung von Makros
29.07.2016 18:23:55
Makros
Hallo Anton,
die Lösung ist schon sehr nahe an meinem Ideal...
Ich habe mir vorgestellt, dass die einzelnen Tabellen und deren Inhalte nicht nebeneinander sondern
untereinander in Form einer zweispaltigen Anlistung ausgegeben werden.
Spalte 1: Tabellenname als Codename (Reiterbezeichnung)
spalte 2: die enthaltenen Makros so wie Du sie auch untereinander geschrieben
hast.
Ziel ist es letztendlich, die Makroveränderungen unterschiedlicher Programmversionen über
einen Vergleich mit der Vorversion zu erkennen.
Besten Gruß
Friedel
AW: Auflistung von Makros
30.07.2016 09:19:38
Makros
Hallo Friedel,
meinst du so?:
Sub b()
Dim ws As Worksheet, oComp As Object
Dim lZeile As Long, CodeZeile As Long
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Code")
If Err.Number = 9 Then
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = "Code"
Err.Clear
End If
On Error GoTo 0
ws.Cells.Clear
lZeile = 1
For Each oComp In ThisWorkbook.VBProject.VBComponents
ws.Cells(lZeile, 1) = oComp.Name
lZeile = lZeile + 1
For CodeZeile = 1 To oComp.CodeModule.CountOfLines
ws.Cells(lZeile, 2) = oComp.CodeModule.Lines(CodeZeile, 1)
lZeile = lZeile + 1
Next
Next
ws.Columns.AutoFit
End Sub
mfg Anton
Anzeige
AW: Auflistung von Makros
30.07.2016 13:44:41
Makros
Hallo Anton,
Du hast mir unwahrscheinlich geholfen. Was ich mir hier schon alles abgebrochen habe....
Dafür ganz dicken Dank.
So ganz perfekt ist es noch nicht, aber ich denke, das kriege ich irgendwie hin.
Als Tabellenname in Spalte 1 würde ich gerne den Codenamen haben; also
statt "Tabelle1" z.B. "Adressen"
statt "Tabelle5" z.B. "Tel.Nr."
halt die Bezeichnungen, die die Tabellen nach einer Umbenennung im Reiter des Blattes erhalten.
Das geht natürlich nicht für die beiden Standards
"DieseArbeitsmappe" und "Modul1" bzw "Modulx". Die bleiben so.
Wenn Du Lust hast, denk nochmal drüber nach.
Da wo Du "ocomp.Name" ausgibst muss irgendein anderes Schlüsselwort hin, was ich nicht kenne.
Viele Grüße
Friedel
Anzeige
AW: Auflistung von Makros
31.07.2016 10:11:17
Makros
Hallo Friedel,
Sub b()
Dim ws As Worksheet, oComp As Object, wks As Worksheet
Dim lZeile As Long, CodeZeile As Long
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Code")
If Err.Number = 9 Then
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = "Code"
Err.Clear
End If
On Error GoTo 0
ws.Cells.Clear
lZeile = 1
For Each oComp In ThisWorkbook.VBProject.VBComponents
ws.Cells(lZeile, 1) = oComp.Name
For Each wks In ThisWorkbook.Worksheets
If wks.CodeName = oComp.Name Then
ws.Cells(lZeile, 1) = wks.Name & "(" & oComp.Name & ")"
End If
Next
lZeile = lZeile + 1
For CodeZeile = 1 To oComp.CodeModule.CountOfLines
ws.Cells(lZeile, 2) = oComp.CodeModule.Lines(CodeZeile, 1)
lZeile = lZeile + 1
Next
Next
ws.Columns.AutoFit
End Sub
PS:ich hoffe, das entspricht jetzt deinem Ideal ;-)
mfg Anton
Anzeige
AW: Auflistung von Makros
31.07.2016 12:40:43
Makros
Hallo Anton,
Du hast Recht: Diese Variante entspricht genau dem, was ich mir in meinen Träumen so vorgestellt habe. Eine Anlistung der Makros mit der passenden Zuordnung. Damit kann ich jetzt e n d l i c h ohne die Umwege über Text-Dateien, zusammengefasste Text-Dateien, in Excel importierte Textdateien usw usw schnörkellos eine Anlistung ziehen und damit weitermachen.
Vielen Dank für Deine Unterstützung.
Es wird mir sehr helfen; und gelernt habe ich auch noch was dabei (obwohl ich längst noch nicht alles raffe, was Du da so zusammencodiert hast).
Danke und
Besten Gruß
Friedel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige