none
VBIDE - Broken Reference lässt sich nicht auslesen

    Frage

  • Hi Community

    ich möchte den Code einer Anwendung (egal ob word, excel oder access) in ein Word-Dokument schreiben um damit später einen Codereview (Office 2007 ==&gt; Office 2010) durchzuführen. Am Anfang des Dokuments sollen die Referenzen aufgelistet werden.</p><p>Klappt alles so weit wunderbar, solange alle referenzen funktionieren. Mit folgendem Codefragment ermittle ich die Referenzen. Jetzt bin ich bei einer Excel-Anwendung auf das Problem gestoßen, dass die in der Anwendung angegebene referenz auf meinem Rechner nicht verfügbar ist. Ist soweit nicht tragisch, da die Anwendung bei mir eh nicht laufen soll, ich brauche nur den Code.

    Deklaration:

        ' VBE-Elemente
        Public objVBProject As VBIDE.VBProject
        Public objVBComponent As VBIDE.VBComponent
        Public objVBReference As VBIDE.Reference

    Procedur:

    ...

    For Each objVBReference In objVBProject.References
        l = l + 1
        Dim strRefName As String
        Dim strRefPath As String
        strRefName = objVBReference.Name:strRefPath = objVBReference.FullPath
        'Verweis schreiben
        Set myWDRng = myWDDoc.Content
        myWDRng.Collapse wdCollapseEnd
        myWDRng.Text = strRefName & vbVerticalTab & strRefPath
        myWDRng.Style = ("Standard")
        myWDRng.InsertParagraphAfter
    Next objVBReference

    ...

    Funktioniert alles soweit gut, nur wenn ich mit

    strRefName = objVBReference.Name

    auf eine broken Reference komme, bekomme ich die Fehlermeldung: "48 - Fehler beim Laden einer DLL"

    Wie komme ich an den Namen der referenz, der ja im Referenzen-Fenster durchaus verfügbar ist??

    Danke

    Roland Grothe


    It's no problem, it's just the syntax

    Donnerstag, 14. Februar 2013 08:59

Antworten

  • Der Unterschied ist, dass ich die Referenzen des Application Objekts benutze.

    Ich habe bei mir nie eine Referenz auf die VBIDE drin. Mein VBA (aus Access) kennt das Objekt VBIDE nicht ohne eine Referenz darauf zu setzen. Kontrolliere mal, woher das kommt (Rechte Maustaste und dann Definition auswählen). Es könnte ja sein, dass bereits diese nicht gut ist und dann kannst Du dort auch nicht die References Collection abfragen. Das Application Object gibt es auf jeden Fall, sonst könntest Du die Anwendung nicht starten.

    Gruss

    Henry

    • Als Antwort markiert Roland Grothe Montag, 15. April 2013 14:00
    Mittwoch, 20. März 2013 04:11

Alle Antworten

  • Hallo Roland

    Versuch' mal ob es so geht:

    Dim objAppReference As Reference
    For Each objAppReference in Application.References
    Dim strRefName As String
      Dim strRefPath As String
      'allenfals auf objAppReference.isBroken prüfen
      strRefName = objAppReference.Name
      strRefPath = objAppReference.FullPath
      ..
    Next

    Das ist der Weg, den ich jeweils in Access benutze.

    Gruss

    Henry

    Freitag, 1. März 2013 07:22
  • Hi Henry - wo ist der Unterschied zu dem, was ich oben mache? OK, ich habe die letzten zwei befehle nur mit Doppelpunkt getrennt - aber daran kann es ja wohl nicht liegen . . .


    It's no problem, it's just the syntax

    Dienstag, 19. März 2013 14:01
  • Der Unterschied ist, dass ich die Referenzen des Application Objekts benutze.

    Ich habe bei mir nie eine Referenz auf die VBIDE drin. Mein VBA (aus Access) kennt das Objekt VBIDE nicht ohne eine Referenz darauf zu setzen. Kontrolliere mal, woher das kommt (Rechte Maustaste und dann Definition auswählen). Es könnte ja sein, dass bereits diese nicht gut ist und dann kannst Du dort auch nicht die References Collection abfragen. Das Application Object gibt es auf jeden Fall, sonst könntest Du die Anwendung nicht starten.

    Gruss

    Henry

    • Als Antwort markiert Roland Grothe Montag, 15. April 2013 14:00
    Mittwoch, 20. März 2013 04:11