Makros auflisten

Hallo,

ich brauche eine Auflistung aller im Makormenü (also wenn ich in Word/Excel auf Menü Extras/Makros/makros ausführen gehe und das Fenster sich öffnet) vorhandenen Programme.
Ausgabe einfach in eine variable mit „vbCr“ getrennt.
Beispiel: ich habe die Programme „DateiFiltern“, „ÖffnenAlsKopie“ und „BuchstabenCode“. Nun möchte ich ein Programm welches mir diese 3 Programme (in meinem Fall sind es mehr als 50) ausliest und in eine Word-Datei schreibt damit ich mal einen Überblick habe bzw. die Programmnamen sind so lang das man das Eigentliche gar nciht mehr lesen kann.

Kann man auch hinbekommen (Ausgabe in Word) das man die entsprechenden Programme (also den code) auch extrahieren kann zur Anzeige?
Sprich: ich möchte den in dem Programm „ÖffnenAlsKopie“ enthaltenen Code mittels eines Programmes nach Word Extrahieren (zb um ein Manuskript zu schreiben).

Bei Rückfragen am Besten an Mail da ich nicht jeden Abend hier bin

Hi Tobias,

du hast da in deiner Anfrage Dinge gesagt die mich irritieren.
Was soll das mit vbCR u.v.m.

Ich probiers mal so, ist das was du als Ergebnis haben möchtest, ein WordDokument wo, jetzt mal auf eine Datei bezogen, egal Excel oder Word, alle in der anderen Datei enthaltenen Makros samt ihrem Code aufgelistet werden !?

Das sehe ich als machbar an, zumindest für Excel-Dateien, und der gleiche Code muß für Word nur unerheblich modifiziert werden, aus ThisWorkbook dann im Code ThisDocument machen usw.

Und, private Mail widerspricht jedem Forumsgedanken.

Der Forumsgedanke ist, öffentlich über was zu reden, sich auszutauschen.

Privat isses das Gleiche, aber halt nur privat, also im kleinen Kreis, ob man sich da trifft weil man sich mag, oder sich hasst ist ja egal, es wird was ausgetauscht.

Gruß
Reinhard

Grüezi Tobi

ich brauche eine Auflistung aller im Makormenü (also wenn ich
in Word/Excel auf Menü Extras/Makros/makros ausführen gehe und
das Fenster sich öffnet) vorhandenen Programme.
Ausgabe einfach in eine variable mit „vbCr“ getrennt.

Schau dir mal die folgende Sub an - da wird zwar ‚nur‘ jeweils in eine MsgBox augegeben, aber das kriegst Du bestimmt umgemodelt:

Sub ListProcedures()
' Type 100 = Diese Arbeitsmappe und Tabellen
' Type 1 = Modul
' Type 3 = UserForm
Dim VBCodeMod As CodeModule
Dim StartLine As Long
Dim Msg As String
Dim x As Long
 x = 1
 While x = .CountOfLines
 Msg = Msg & .ProcOfLine(StartLine, vbext\_pk\_Proc) & Chr(13)
 StartLine = StartLine + \_
 .ProcCountLines(.ProcOfLine(StartLine, \_
 vbext\_pk\_Proc), vbext\_pk\_Proc)
 Loop
 End With

 End If
 MsgBox Msg
 End If
 x = x + 1
 Wend

End Sub

Kann man auch hinbekommen (Ausgabe in Word) das man die
entsprechenden Programme (also den code) auch extrahieren kann
zur Anzeige?

Prinzipiell kannst Du dazu auf dem obigen Code aufbauen.

Bei Rückfragen am Besten an Mail da ich nicht jeden Abend hier
bin

…das ist dann dein 'Problem, die Lösungen im Forum sollen auch anderen zur Verfügung stehen, daher erfolgt die Antwort (nur) hier.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

[MOD] - Antworten per E-Mail
Hallo,

Bei Rückfragen am Besten an Mail da ich nicht jeden Abend hier
bin

wenn Du beim Schreiben der Frage das Häkchen unter Optionen:
‚Du erhältst eventuelle Antworten auf diesen Artikel per E-Mail‘ anklickst, muss Dir Niemand extra eine Mail senden, dann bekommst Du die Antwort im Forum als Kope in eine Mail und die Antworten können auch anderen helfen, die hier nur mal lesen.

Wenn Du das Häkchen vergessen hast, kannst Du auch nachträglich im Menü noch ‚Antworten auf diesen Artikel per E-Mail bestellen‘.

Gruß, Rainer

Hallo Rainer,

stimmt - ich hab den Haken auch aktiv. Naja, schusselfehler von mir *g*

Hi Tobias,

du hast da in deiner Anfrage Dinge gesagt die mich irritieren.
Was soll das mit vbCR u.v.m.

Ich probiers mal so, ist das was du als Ergebnis haben
möchtest, ein WordDokument wo, jetzt mal auf eine Datei
bezogen, egal Excel oder Word, alle in der anderen Datei
enthaltenen Makros samt ihrem Code aufgelistet werden !?

ich erklärs am besten noch mal allgemein weiter oben, da es scheinbar doch etwas wirr formuliert war :smile:

Das sehe ich als machbar an, zumindest für Excel-Dateien, und
der gleiche Code muß für Word nur unerheblich modifiziert
werden, aus ThisWorkbook dann im Code ThisDocument machen usw.

naja, das ist ja nicht so das Problem.

Hallo Thomas,

ich danke dir erst mal für die Mühe, aber leider funzt der Code nicht so richtig. Aber ich möchte nocheinmal in einem Extra Artikel schreiben um was es mir geht, vielleicht gelingt es mir heute besser *g*

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Neuer Erklärungsversuch
Also, da ich hier einige Verwirrung gestiftet habe - auf ein neues.
ich arbeite mit Word/Excel 2000 auf Arbeit. Wenn ich übers Menü Extras / Makros / Makros ausführen gehe erscheint ein Fenster in dem alle mir verfügbaren Makros stehen die ich aufrufen kann. Problem ist nur, durch verschiedenste Module etc. sind die Makronamen so lang (TemplateProject.txbno019.Au … - ja, und da hört der sichtbare Bereich auf) das der eigentliche Name des Makros (Au …) außerhalb des Fensters liegt.
Nun ist es immer mühselig jedes einzelne Makro in ne Symbolleiste zu packen was da nun am Ende für ein Text steht (zb eben AutoStart_Alternative) habe ich mir gedacht es müsste doch eine Möglichkeit geben diese Makronamen irgendwie auszulesen (ähnlich wie AutoTexte oder so) und dann lesbar zu machen (egal ob Dokument, Variable, Msgbox oder so).

Jetzt besser verstanden? Ich hoffe doch *gg*
LG

Hi Tobi,

stimmt - ich hab den Haken auch aktiv. Naja, schusselfehler
von mir *g*

dann ist es ja gut, das war ja nur ein Hinweis, falls Du die Funktion nicht kennst. :smile:

Gruß, Rainer

ich danke dir erst mal für die Mühe, aber leider funzt der
Code nicht so richtig. Aber ich möchte nocheinmal in einem
Extra Artikel schreiben um was es mir geht, vielleicht gelingt
es mir heute besser *g*

Hallo Tobias,

ich habe deinen neuen Artikel gelesen, desto mehr will ich, bzw. muß ich wissen was du genau meinst wenn du sagst: „leider funzt der
Code nicht so richtig“, was als Feedback sowieso eine Sauerei ist.

Thomas fällt völlig garantiert nicht ins Koma wenn du sagst der Debugger meldete in Zeile 6 den Fehler 1004, sondern ist über eine solche Rückmeldung erfreute, denn darauf kann man aufbauen.

Nun sehe ich das so, Thomas gab dir Code der Namen in einer MSGBox ausgibst.

Du sagst das klappt nicht sor richtig.

Im neuen Beitrag willst du aber eine Ausgabe in einer MsgBox:
„es müsste doch eine Möglichkeit geben diese Makronamen irgendwie auszulesen (ähnlich wie AutoTexte oder so) und dann lesbar zu machen (egal ob Dokument, Variable, Msgbox oder so).“

Kannst du nachvollziehen warum ich nicht auf deinen neuen Beitrag eingehe, solange es ungeklärt ist was da mit dem Code war usw.

Gruß
Reinhard

Hallo,

klar hätte ich auf den Code eingehen können, aber ich hatte meine Gründe warum ich es nicht tat.
Zum einen hab ich nicht nachvollziehen können was der Code wie wann etwas tut. Somit konnte ich auch nicht nachvollziehen ob der Code genau das ist was ich brauch.
Da der Code erst einmal nicht funktionierte nahm ich an: das ist nicht der Code; beschreib noch mal genauer, vielleicht ergeben sich dadurch neue Rückschlüsse bevor ich hier im Code jeden Fehler anzeige. Mehr ist da nicht dahinter …

LG

Hallo,

ich misch mich mal ein.

Da der Code erst einmal nicht funktionierte …

Reinhards Frage war, was bedeutet ‚nicht funktioniert‘?

Passiert gar nichts, gibt es eine Fehlermeldung, wenn ja welche …

Es könhte ja sein, Du hast schon den Code, den Du suchst und da ist nur ein Komma statt einem Punkt an irgend einer Stelle.

Gruß, Rainer

Grüezi Tobi

ich danke dir erst mal für die Mühe, aber leider funzt der
Code nicht so richtig.

Du beliebst nicht zu sagen, war Du unter ‚funzt nicht so richtig‘ verstehst - bei mir wirft er jedenfalls die Namen Aller Subs in der betreffenden Mappe in einer MsgBox aus.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Tobias

ich arbeite mit Word/Excel 2000 auf Arbeit. Wenn ich übers
Menü Extras / Makros / Makros ausführen gehe erscheint ein
Fenster in dem alle mir verfügbaren Makros stehen die ich
aufrufen kann. Problem ist nur, durch verschiedenste Module
etc. sind die Makronamen so lang (TemplateProject.txbno019.Au
… - ja, und da hört der sichtbare Bereich auf) das der
eigentliche Name des Makros (Au …) außerhalb des Fensters
liegt.
Nun ist es immer mühselig jedes einzelne Makro in ne
Symbolleiste zu packen was da nun am Ende für ein Text steht
(zb eben AutoStart_Alternative) habe ich mir gedacht es müsste
doch eine Möglichkeit geben diese Makronamen irgendwie
auszulesen (ähnlich wie AutoTexte oder so) und dann lesbar zu
machen (egal ob Dokument, Variable, Msgbox oder so).

Ja, eben genau das tut doch (zumindest für Excel) die unten gepostete Prozedur - jede Sub der betreffenden Mappe wird nacheinander in einer MsgBox ausgegeben.

Umbauen kannst Du das ja selber, wenn das notwendig sein sollte.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Tobias,

Zum einen hab ich nicht nachvollziehen können was der Code wie
wann etwas tut. Somit konnte ich auch nicht nachvollziehen ob
der Code genau das ist was ich brauch.

Irgendwie alles irgendwie logisch oder doch irgendwie nicht :smile: *hmmh* mal laufen lassen den Code?

Da der Code erst einmal nicht funktionierte nahm ich an: das
ist nicht der Code; beschreib noch mal genauer, vielleicht
ergeben sich dadurch neue Rückschlüsse bevor ich hier im Code
jeden Fehler anzeige. Mehr ist da nicht dahinter …

Okay , scheinbar hast du ihn laufen lassen, aber genau die Angabe welcher Fehler wann wo bei welchen Betriebswerten sich ergab ist wichtig.

Sicher, in meinen Makros würde der Code einen Fehler anzeigen, aber ich und Thomas wissen warum, aber das liegt bei dir garantiert nicht vor (laß dich davon nicht verwirren, ungetestet sag ich mal es liegt nicht am Code), also ist für mich der Code sehr okay, es muß etwas mit deiner Benutzung des Codes zu tun haben, oder mit dem Zustand der Arbeitsmappe oder oder

und da wir nicht an deinem PC sitzen und keine Glaskugel haben, sach mal alles …

Gruß
Reinhard

ich danke dir erst mal für die Mühe, aber leider funzt der
Code nicht so richtig.

Du beliebst nicht zu sagen, war Du unter ‚funzt nicht so
richtig‘ verstehst - bei mir wirft er jedenfalls die Namen
Aller Subs in der betreffenden Mappe in einer MsgBox aus.

Grüezi Thomas,

Bei Milliarden von Menschen klappt der Code nicht.

vielleicht machst du irgendwelche Bedienungsfehler?

Schreib mal Step bei Step auf was du alles so machst bis es zu dieser seltsamen MsgBoxausgabe kommt, wir kriegen schon hin daß sie nicht mehr erscheint *grien*

Irgendwas machst du da wohl falsch *lach*

Lieben Gruß
Reinhard

Fehler
Hallo,

ok, es geht los bei

„VBCodeMod As CodeModule“

das er bringt „Benutzerdefinierter Typ nicht definiert“. Wenn ich das „as CodeModule“ wegnehme bringt er mir weitere Fehler bei

„ProcOfLine“ und
„vbext_pk_Proc“

soweit ich das beurteilen kann. und jedenfalls hier zu haus mit Excel2003) - oder läuft das nur unter Excel 2000?

LG

„VBCodeMod As CodeModule“
das er bringt „Benutzerdefinierter Typ nicht definiert“. Wenn
ich das „as CodeModule“ wegnehme bringt er mir weitere Fehler
bei
„ProcOfLine“ und
„vbext_pk_Proc“

Hi Tobias,

setze mal bei Extras–Verweise den Verwes auf Microsoft Visaul Basic for application Extensibility

Gruß
Reinhard

Mea culpa!
Grüezi Tobias

„VBCodeMod As CodeModule“
das er bringt „Benutzerdefinierter Typ nicht definiert“.

setze mal bei Extras–Verweise den Verwes auf Microsoft Visaul
Basic for application Extensibility

Der Hinweis auf diesen Verweis hat in der Tat gefehlt.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

hallo,

diesen Verweis habe ich leider bei mir nicht gefunden.
ABER: ein Programm welches auch ohne Verweis funktioniert (link extra hier aufgelistet)

Trotzdem danke an alle die mit gegrübelt haben