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

Warum läuft dieser Code nicht?

Warum läuft dieser Code nicht?
Holger,
Hallo,
ich habe mir diesen Code aus dem Internet gezogen, der alle enthaltenen Makros in einer Word Datei schreiben soll. Würde er funktionieren, könnte man ihn gut anpassen für eigene Zwecke.
Leider läuft er schon in der ersten Zeile auf Fehler:
For Each myProject In VBE.VBProject
Meldung: Objekterstellung duch ActiveX Komponente nicht möglich.
Läuft der Code bei euch bzw wer kennt die Lösung?
der Verweise auf Microsoft Visual Basic for Applications Extensibility 5.3 muss gesetzt sein.
Option Explicit
Sub ListMacros()
Dim oApp As Word.Application
Dim myProject As VBProject
Dim myComponent As VBComponent
Dim strNames As Variant, strDocNames As String
Dim strFile() As String
Dim iCount As Integer
Dim strProc As String
'Set oApp = GetObject(, "Word.Application")
' Alle Projekte durchlaufen
For Each myProject In VBE.VBProjects
strNames = ""
' Nur ungeschützte berücksichtigen
If myProject.Protection = vbext_pp_none Then
On Error Resume Next
If myProject.VBComponents.Count > 1 Then
strFile() = Split(myProject.Filename, "\")
strNames = strNames & myProject.Name & " (" & _
strFile(UBound(strFile())) & ")" & vbCrLf
On Error GoTo 0
' Alle Module durchlaufen
For Each myComponent In myProject.VBComponents
With myComponent
' Modul-Typ ermitteln
If .Type = vbext_ct_StdModule Then
strNames = strNames & vbTab & .Name & vbTab & " (bas)" & vbCrLf
ElseIf .Type = vbext_ct_ClassModule Then
strNames = strNames & vbTab & .Name & vbTab & " (cls)" & vbCrLf
ElseIf .Type = vbext_ct_MSForm Then
strNames = strNames & vbTab & .Name & vbTab & " (frm)" & vbCrLf
ElseIf .Type = vbext_ct_Document Then
strNames = strNames & vbTab & .Name & vbTab & " (doc)" & vbCrLf
End If
' Declaration auslesen
If .CodeModule.CountOfDeclarationLines > 0 Then
For iCount = 1 To .CodeModule.CountOfDeclarationLines
If .CodeModule.Lines(iCount, 1)  "" Then
strNames = strNames & vbTab & vbTab & "Declaration" & vbTab & " (" & _
.CodeModule.CountOfDeclarationLines & " Z.)" & vbCrLf
Exit For
End If
Next iCount
End If
' Prozeduren auslesen
strProc = ""
For iCount = 1 To .CodeModule.CountOfLines
If .CodeModule.ProcOfLine(iCount, vbext_pk_Proc)  strProc Then
strProc = .CodeModule.ProcOfLine(iCount, vbext_pk_Proc)
strNames = strNames & vbTab & vbTab & strProc & vbTab & " (" & _
.CodeModule.ProcCountLines(strProc, vbext_pk_Proc) & " Z.)" & vbCrLf
End If
Next iCount
End With
Next myComponent
'MsgBox strNames
strDocNames = strDocNames & strNames & vbCrLf
End If
End If
Next myProject
' In Dokument ausgeben
Dim oDoc As Document
Set oDoc = Documents.Add
oDoc.Range.InsertAfter strDocNames
End Sub

AW: Warum läuft dieser Code nicht?
01.03.2011 14:08:30
Hajo_Zi
Hallo Holger,
den Zugriff auf das VBA Projekt hast Du zugelassen.
Da dies tief in die Sicherheit geht. Schreibe ich keine Anleitung.

Und nu?
01.03.2011 14:14:52
Holger,
Hallo Hajo,
jetzt weiss ich ja auch nicht weiter. Kannst du mir dann per email weiterhelfen?
Ich habe mittlerweile einige Projekte mit zig makros und möchte einfach alle in einer Datei aufgelistet haben.
Hajos 1.Satz ist eigentl auch 'ne Frage,...
01.03.2011 16:17:58
Luc:-?
…Holger;
ansonsten kannst du es ja mal erst mit direkt benannten Einzelprojekten versuchen (nicht alle in einem Durchlauf).
Gruß Luc :-?
Anzeige
AW: Hajos 1.Satz ist eigentl auch 'ne Frage,...
01.03.2011 18:23:29
Holger,
Ja, der Zugriff ist freigegeben.
Was meinst du mit direkt benannten Einzelobjekten?
Genau das ist mein Problem. In dem Code wird kein VBE Objekt instanzieert, wenn du mir zwecks der Syntax auf die Sprünge helfen könntest, kann ich es nur anhand des aktuellen VBA Projektes testen.
Na, einfach ein ganz bestimmtes Projekt...
01.03.2011 18:56:23
Luc:-?
…namentlich nennen und dessen Komponenten durchgehen, Holger,
um überhpt erst mal zu sehen, ob das Pgm an sich fktt. Ich gebe meinen Projekten immer eigene Namen, weil mir VBA-Projekt als Name nicht eindeutig genug ist. Allerdings ist mir ein Durchgehen aller Projekte, die gerade offen sind, zu zufällig. Ich mache so etwas lieber ganz gezielt projektweise. Aber das kannst du halten wie du willst, nur fktn muss es dann auch… ;-)
Gruß Luc :-?
Anzeige
Namen habe ich aber ...
01.03.2011 19:25:17
Holger,
... die Syntax nicht?
Wie genau kann ich nur auf mein Projekt zugreifen?
Mein Projekt heisst TestGetMacros
Set und was dann?
Wieso Set? .Components o.so ä.! owT
01.03.2011 21:05:40
Luc:-?
:-?
AW: Wieso Set? .Components o.so ä.! owT
03.03.2011 10:17:18
Holger,
Ich bräuchte eben die wie bereits geschrieben die GENAUE SYNTAX
Hier für Dich wie es geht
Set VBCodeMode = ThisWorkbook.VbProject. VBComponents("MeinModul").CodeModule
Für wie schlau hältst du dich eigentl?! Ich...
03.03.2011 14:46:08
Luc:-?
…habe deine Nachhilfe garantiert nicht nötig!
Das könntest auch du leicht feststellen, wenn du dir die entsprechenden Beiträge aus mehr als 6 Jahren im Archiv ansiehst…
Was hindert dich daran, dir die genaue Syntax selbst zusammen zu suchen, wie andere es auch getan haben bzw tun müssen…?
…Und Tschüss…!
Luc :-?
Anzeige
AW: Für wie schlau hältst du dich eigentl?! Ich...
03.03.2011 15:41:08
Holger,
Warum schreibst du dann so ähnlich ?
Wie geschrieben, wenn du nicht helfen willst, schreib das doch.
Stattdessen gibst du unklare Antworten, obwohl du es besser weißt.
Und wozu gibt es das Forum, wenn sich jeder alles selber raussuchen soll?
Weiß nicht, ob das im Sinne von diesem Forum bist, aber das scheinst du ja sowieso am besten zu wissen.
Und keine Sorge, habe bereits eine E-Mail geschrieben mit der Bitte um Löschung meines Accounts.
Du brauchst Dich also nicht weiter so aufzuregen.
Aber wie persönlich du reagierst, das ist wirklich mal eine Frechheit und habe ich in zwanzig Jahren noch niemals erlebt, wie jemand sich so voller Hass auf jemanden einschiesst!!
Anzeige
Das liegt ganz allein an dir, und glaube...
03.03.2011 17:35:07
Luc:-?
…mir, so etwas habe ich durchaus schon erlebt! Hetzjagd, Einschießen — auf dich? Für wie wichtig hältst du dich eigentlich?
Dein „Account“ (falls du die Anmeldung meinst) könnte zwar gelöscht wdn, aber ob HWH das macht…? Einzelne Beiträge wdn jedenfalls nur in Ausnahmefällen gelöscht; dazu solltest du viell doch mal die Forumsregeln und -benutzungs­bedingungen lesen.
Luc :-?
siehe Vertrauenstellungscenter
01.03.2011 14:20:47
Rudi
Hallo,
Zugriff auf Visual-Basic Projekt vertrauen.
Gruß
Rudi
Auch nicht
01.03.2011 14:28:27
Holger,
Hallo Rudi,
den Haken hatte ich vorher schon gesetzt, das hatte ich schon ergoogelt.
Leider selbe Meldung ;(. Fehlt mir vielleicht noch ein Verweis? Ich denke, der Code ist für 2003 geschrieben worden und nicht für 2007. Eventuell ist hier ja was anders?
Anzeige
Warum läuft dieser Code nicht?
03.03.2011 11:51:51
Anton
Hallo Holger,
ersetze:
For Each myProject In VBE.VBProject
durch:
For Each myProject In Application.VBE.VBProjects
mfg Anton

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige