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

Verweise in VBA/Excel

Verweise in VBA/Excel
09.06.2006 12:48:37
Johannes
Hi Leutz!
Vielleicht kann mir einer von euch ja weiterhelfen.
Ich schlage mich gerade mit den Verweisen von VBA rum,
bzw. den gebrochenen Verweisen.
Bitte keine Hinweise auf andere Beträge die hab ich mit
Sicherheit schon gelesen.
Ich weiß wie ich ein Projekt nach Verweisen durchsuchen und
auch wie ich sie mir falls sie fehlen rein lade usw. nur eines
funktioniert leider nicht.
Angenommen ich habe auf einem Computer einen Verweis auf Outlook
olb Datei der Version 11.
Wenn ich nun auf anderem Computer mit einer geringeren Outlookversion
z.B. Version 10 sitze, kann man unter Extras Verweise sehen, dass der Verweis
zu Outlook Version 11 gebrochen ist.
Jetzt will ich den gebrochenen raus und den Version 10 Verweis rein, das Problem ist nur ich kann den alten Verweis nicht löschen.
Programm:
For Each objVerweis In Application.VBE.ActiveVBProject.References
intZeile = intZeile + 1
strGUID = objVerweis.GUID
lngMajor = objVerweis.major
lngMinor = objVerweis.minor
If strGUID = "{00062FFF-0000-0000-C000-000000000046}" Then
Application.VBE.ActiveVBProject.References.Remove objVerweis
---&gt ActiveWorkbook.VBProject.References.Remove objVerweis
Application.VBE.ActiveVBProject.References.AddFromFile "C:\Program Files\Microsoft Office\Office10\msoutl.olb"
Else
ThisWorkbook.Sheets("Tabelle1").Range("A" & intZeile).Value = _
"Name: " & objVerweis.Name & vbCrLf & "GUID: " & objVerweis.GUID & vbCrLf & _
"Description: " & objVerweis.Description & vbCrLf & "FullPath: " & objVerweis.FullPath & vbCrLf
End If
Next objVerweis
Exit Sub
Bei dem mit Pfeil gekennzeichneten Punkt kommt dann Fehlermeldung das die DLL nicht gefunden wurde. Ist mir auch klar schließlich ist der Verweis ja gebrochen, aber ich will ihn ja rauslöschen und das macht er einfach nicht.
Hat irgendwer von euch vielleicht noch ideen?
Danke lg JOhannes

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verweise in VBA/Excel
09.06.2006 22:25:12
Luschi
Hallo Johannes,
wenn die Next-Schleife so lautet:
For Each objVerweis In Application.VBE.ActiveVBProject.References
dann dürte es wohl nicht klappen, die Objekt-Variable "objVerweis"
auf ein fremdes Objekt anzuwenden, nämlich:
ActiveWorkbook.VBProject.References.Remove objVerweis
Dann sollte sollte die Next-Schleife schon so lauten:
For Each objVerweis In ActiveWorkbook.VBProject.References
oder
For Each objVerweis In ThisWorkbook.VBProject.References
Ich benutze diese Routine (siehe http://www.online-excel.de/excel/singsel_vba.php?f=80
(fast am Ende der Seite) und benutze den GUID-Eintrag. Damit ist man von Pfadangaben unabhängig.
Public Sub prcSetReferences()
Dim intIndex As Integer
Dim bolfound As Boolean
With ThisWorkbook.VBProject.References
For intIndex = 1 To .Count
If .Item(intIndex).GUID = _
"{0002E157-0000-0000-C000-000000000046}" Then
If .Item(intIndex).IsBroken Then _
.Remove .Item(intIndex) Else _
bolfound = True: Exit For
End If
Next
If Not bolfound Then .AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", _
Major:=5, Minor:=3
End With
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Verweise in VBA/Excel
10.06.2006 11:59:21
Johannes
Vielen Dank für die Antwort, aber daran ein object zu verwenden anstelle einer wirklichen Referenz macht zumindest bei mir überhaupt keinen Unterschied. Hab das auch mit den "tatsächlichen Object versucht, dass ic mit ActivevWorkbook.... usw ansprechen kann ist immer das Gleiche.
Das Problem liegt prinzipiell an .isBroken weil das nicht wie in der Hilfe definiert einer nicht mehr vorhanden Referenz nicht false ausgibt sondern Fehler 48 und beim Vesuch diesen gebrochenen Verweis zu entfernen bekommst du dann die Fehlermeldung "Fehler beim Laden einer DLL"...
Dennoch hab ich eine relativ zufriedenstellende Lösung gefunden. Eigentlich war mein Problem ja nur dass wenn ich VBA mit Outlook 11 Verweis speichere und dann auf PC mit Verweis auf Outlook 10 öffne nix mehr geht weil Verweis eben gebrochen ist, aber das sollte wie ich gestern abend herrausgefunden habe gar nicht passieren, eigentlich sollte er stillschweigend den 10er Verweis reinnehmen was er auch tut wenn man die WIn-Reg ein wenig anpasst, 1 oder 2 nutzlose Verweise zusätzlich einstellt. Wenns wen interessiert bitte reinposten dann stell ichs rein.
lg johannes
Anzeige
AW: Verweise in VBA/Excel
11.06.2006 09:20:07
Luschi
Hallo Johannes,
leider kann ich solche Sachen nicht machen, da ich die Kunden der Excel- & Accessprogramme nie zu Gesicht bekomme. Deshalb bleibt nur nur Abfrage nach dem IsBroken-Ereignis. Zudem ist den Usern mit eingeschränkten Rechten im Netzwerk meist das Schreiben in die Registry durch den Admin versagt. Deshalb nenutze ich die von mir genannte Routine.
Gruß von Luschi
aus klein-Paris

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige