Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
448to452
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
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Verweis auf Object Library löschen

Verweis auf Object Library löschen
02.07.2004 10:11:54
Andreas
Hallo Cracks
Ich habe ein Problem mit dem Verweis auf eine Object Library: Folgender Code soll bei jeder Office-Version überprüfen, ob der richtige Verweis auf die Outlook Object Library gesetzt ist, und falls nicht, den richtigen setzen. Es gibt dann 3 Möglichkeiten:
- Verweis auf richtige Library ist bereits gesetzt: Kein Problem
- Kein Verweis auf die Outlook Object Library ist gesetzt: Kein Problem
- Falscher Verweis ist gesetzt (andere Office-Version...): PROBLEM! Der Verweis "NICHT VORHANDEN: Microsoft Outlook Object Library ..." wird von meinem Code nicht gelöscht. Kann mir da jemand weiterhelfen? Wäre mega nett! Hier der Code:
Sub Workbook_Open()
'Menublatt aktivieren
shtMenu.Activate
Dim BIBLIO_FILENAME As String
Dim objVBE, oRef, WSHShell As Object
Dim blnFound As Boolean
Set WSHShell = CreateObject("wscript.shell")
Set objVBE = ActiveWorkbook.VBProject.References
'fragt die Office-Version ab und liest den Office-Installationspfad aus der Registry ein
Select Case Application.Version
Case "8.0e"
BIBLIO_FILENAME = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\8.0\BinDirPath") & "\msoutl85.olb"
Case "9.0"
BIBLIO_FILENAME = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\9.0\BinDirPath") & "\msoutl9.olb"
Case "10.0"
BIBLIO_FILENAME = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Common\InstallRoot\Path") & "msoutl.olb"
Case "11.0"
BIBLIO_FILENAME = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Common\InstallRoot\Path") & "msoutl.olb"
End Select
'falls keine Outlook-Object-Library vorhanden ist, wird blnFound = False
For Each oRef In objVBE
If UCase(oRef.Name) = UCase(BIBLIO_NAME) Then
'Remove old Reference
objVBE.Remove ThisWorkbook.VBProject.References(oRef.Name)
'Set New Reference
Call SetReference(BIBLIO_FILENAME, objVBE)
End If
Next
'Set New Reference
Call SetReference(BIBLIO_FILENAME, objVBE)
End Sub

Private Function SetReference(ByVal BIBLIO_FILENAME As String, ByVal objVBE As Object)
objVBE.Remove ThisWorkbook.VBProject.References(oRef.Name)
objVBE.AddFromFile BIBLIO_FILENAME
MsgBox "Verweis gesetzt!"
End Function

Gruss Andreas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verweis auf Object Library löschen
Udo
Am einfachsten, du verzichtest gleich auf einen Verweis. Es macht auch keinen
Sinn, einen Verweis nachträglich zu setzen.
Udo
AW: Verweis auf Object Library löschen
02.07.2004 10:24:52
Andreas
Merci für Deine schnelle Antwort. Ich habe aber das Gefühl, ich stehe kurz vor dem Ziel, da der Code ansonsten ja tip topp funktioniert. Zudem wird der Verweis ja gesetzt, wenn die Arbeitsmappe geöffnet wird, darum verstehe ich Deine Anmerkung nicht.
Gruss
Andreas
AW: Verweis auf Object Library löschen
Udo
Der Verweis wird innerhalb der Mappe gespeichert, sofern er beim Speichern
der Mappe gesetzt ist. Ein Verweis ist aber nicht zwingend erforderlich.
Hat zwar den Nachteil, dass dann mit late Binding gearbeitet wird, doch
das ist bei den heutigen PC- Leistungen kaum zu merken(siehe WSH).
Udo
Anzeige
AW: Verweis auf Object Library löschen
02.07.2004 10:35:30
Andreas
OK, late binding habe ich mir auch überlegt, aber aus Performance-Gründen sein lassen, da die Maschinen, auf denen der Code läuft, ziemlich langsam sind. Irgendwie habe ich das Gefühl, ich bräuchte nur eine Zeile Code, die ungültige Verweise automatisch löscht...
Andreas
AW: Verweis auf Object Library löschen
Udo
Das ist ja nicht das Problem, das eigentliche Problem ist, dass du einen
gesetzten gültigen Verweis zur Laufzeit des Programms nicht löschen
kannst.
Udo
gelöst!
02.07.2004 11:33:48
Andreas
'falls Verweis ungültig ist
If oRef.isBroken Then
objVBE.Remove oRef
So wird der ungültige Verweis gelöscht und der neue (gültige) kann gesetzt werden.
Andreas
Anzeige
AW: gelöst!
Udo
Sag ich doch, nur wenn der Verweis gültig ist, kann er nicht gelöscht werden.
Udo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige