Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

noch mal: VBA Verweise per Code setzen

Forumthread: noch mal: VBA Verweise per Code setzen

noch mal: VBA Verweise per Code setzen
Peter
Hallo zusammen,
sorry, wenn ich es noch einmal posten muss. Ich hatte das Häkchen gesetzt "Bei Antworten Email-Info", das hat leider nicht funktioniert. Heute finde ich unter "Deine Beiträge", dass es bereits am selben Tag (26.02.) eine Antwort gab, die aber nicht weiterhilft. Leider ist der Beitrag schon im Forums-Archiv,
und ich finde keine Möglichkeit mehr, darauf zu antworten. Deshalb das Ganze noch mal:
Meine Frage:
________________________________________________
Guten Tag zusammen,
ein von mir geschriebenes Excel-Tool liegt auf dem Server und muss auf meinem Rechner
unter Office 2007 laufen, aber auch bei einer Kollegin unter Office 2010.
Da aus Excel heraus auch Word angesprochen wird, gibt es einen Verweis auf die
Microsoft Word 12.0 Object Library. Wenn meine Kollegin das Tool nutzt, wird stattdessen
automatisch ein Verweis auf die Microsoft Word 14.0 Object Library gesetzt. So weit schön,
dehalb funktioniert bei ihr ja auch alles. Wenn ich das Tool danach benutzen will, geht's nicht,
weil auf meinem Rechner natürlich die 14er Version nicht gefunden wird.
Nun wollte ich als Ereignisprozedur beim Öffnen den richtigen Verweis setzen. Hier ein Ausschnitt
aus dem Code:
sLink1 = "C:\Programe\Microsoft Office\Office12\MSWORD.OLB"
sLink2 = "C:\Programme\Common Files\Microsoft Shared\Office14\MSO.DLL"
Select Case pc
Case "PKS-NB01"
On Error Resume Next
ThisWorkbook.VBProject.References.Remove _
ThisWorkbook.VBProject.References(sLink2)
ThisWorkbook.VBProject.References.AddFromFile sLink1
Case "JZH-NB01"
On Error Resume Next
ThisWorkbook.VBProject.References.Remove _
ThisWorkbook.VBProject.References(sLink1)
ThisWorkbook.VBProject.References.AddFromFile sLink2
End Select
Leider funktioniert das nicht. Es gibt keine Fehlermeldung, aber das Ändern der Verweise hat auch
nicht stattgefunden.
Vielen Dank für jeden guten Rat.
Peter
______________________________________
Antwort von ransi:
HAllo
unter Office 2007 laufen
Dann solltest du auch unter 2007 programmieren.
Arbeite mit Late Binding.
DAnn hast du die Problem nicht.
z.B. so:
Dim appWd as object
set appWd =createobject("Word.Application")
Schon ist der Verweis auf Word gesetzt.
ransi
____________________________________________
Dazu ist zu sagen: ja klar, ich skripte unter 2007. Beim Vorschlag von ransi ist es aber doch so,
dass das "CreateObject" erst zur Laufzeit wirksam wird. Folgerichtig meckert Excel schon beim
Kompilieren, dass es im Code Objekte gibt, die unbekannt sind, wie z.B. wdDialogFileSaveAs etc.
Ich glaube also nach wie vor, dass vor der Ausführung eines Codes, der Word-Objekte verwendet,
der entsprechende Verweis auf die richtige Bibliothek gesetzt sein muss. Dazu bitte ich noch mal um
Hilfe.
Vielen Dank und Gruß
Peter
Anzeige

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

Betreff
Benutzer
Anzeige
AW: noch mal: VBA Verweise per Code setzen
08.03.2011 11:02:05
Nepumuk
Hallo,
beim setzen von Verweisen ist es 1. notwendig das das Projekt nicht mit einem Kennwort geschützt ist und 2. das der User den Zugriff auf das VBA-Projekt frei gibt. Wenn du mit deinem Programm fertig bist und es schützen willst, oder der User den Zugriff nicht freigegeben hat funktioniert das ganze nicht mehr und du kannst von vorne anfangen. Spar dir das und mach es so wie ransi vorgeschlagen hat.
wdDialogFileSaveAs ist eine Konstante und hat den Wert 84. Ersetze die Bezeichnung mit dem Wert oder definiere die Konstante in Excel.
Gruß
Nepumuk
Anzeige
AW: noch mal: VBA Verweise per Code setzen
08.03.2011 12:44:02
Peter
Hallo Nepumuk,
danke für deine Antwort.
1. Das Projekt ist nicht geschützt (in diesem Fall nicht nötig)
2. Was meinst du damit, dass der User den Zugriff auf das VBA-Projekt freigibt?
Kann mir nicht vorstellen, dass du damit allgemein das Zulassen der Ausführung von Makros
meinst (sonst hätte das Ganze ja eh keinen Sinn). Kann man als User explizit den Zugriff auf
das Projekt erlauben oder verweigern? Wenn ja, wo?
Ich frage deshalb, weil mir die korrekt gesetzten Verweise da doch einfacher erscheinen, als alle
möglichen Stellen irgendwie anders zum Laufen zu bringen.
Müsste denn der von mir angegebene Code mit ... References.Remove und ... References.AddFromFile
grundsätzlich funktionieren, wenn der Zugriff auf das VBA-Projekt freigegeben ist?
Gruß
Peter
Anzeige
AW: noch mal: VBA Verweise per Code setzen
08.03.2011 12:52:53
Peter
Sorry, kann ja selber googeln. Die Freigabe habe ich gefunden, im Vertrauensstellungscenter.
Der Haken bei "Zugriff auf das VBA-Projektobjektmodell vertrauen" war bei mir schon gesetzt,
von daher hätte es gehen müssen.
Noch jemand eine Idee?
Danke
Peter
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Verweise per Code setzen in Excel


Schritt-für-Schritt-Anleitung

  1. Zugriff auf das VBA-Projektobjektmodell aktivieren:

    • Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center.
    • Aktiviere das Kontrollkästchen Zugriff auf das VBA-Projektobjektmodell vertrauen.
  2. Code für das Setzen von VBA Verweisen schreiben:

    • Öffne den VBA-Editor (ALT + F11).
    • Füge den folgenden Code in ein Modul ein:
    Sub SetVBAReferences()
        Dim sLink1 As String
        Dim sLink2 As String
        Dim pc As String
    
        sLink1 = "C:\Programe\Microsoft Office\Office12\MSWORD.OLB"
        sLink2 = "C:\Programme\Common Files\Microsoft Shared\Office14\MSO.DLL"
        pc = Environ("COMPUTERNAME") ' Aktuellen Computernamen abfragen
    
        Select Case pc
            Case "PKS-NB01"
                On Error Resume Next
                ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References(sLink2)
                ThisWorkbook.VBProject.References.AddFromFile sLink1
            Case "JZH-NB01"
                On Error Resume Next
                ThisWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References(sLink1)
                ThisWorkbook.VBProject.References.AddFromFile sLink2
        End Select
    End Sub
  3. Makro ausführen:

    • Starte das Makro SetVBAReferences, um die entsprechenden Excel VBA Verweise zu setzen.

Häufige Fehler und Lösungen

  • VBA Verweise ausgegraut:

    • Überprüfe, ob das Projekt geschützt ist. Ein geschütztes Projekt lässt keine Änderungen an den Verweisen zu.
    • Stelle sicher, dass du die Freigabe für den Zugriff auf das VBA-Projektobjektmodell aktiviert hast.
  • Keine Fehlermeldung, aber Verweise werden nicht gesetzt:

    • Prüfe den Computernamen mit Environ("COMPUTERNAME"). Der Name muss exakt übereinstimmen mit dem im Select Case-Block.

Alternative Methoden

  • Late Binding verwenden:

    • Anstatt feste Verweise zu setzen, kannst du Late Binding nutzen, um zur Laufzeit auf Word zuzugreifen. Beispiel:
    Dim appWd As Object
    Set appWd = CreateObject("Word.Application")
    • Dies verhindert, dass du dich um die Versionierung der Word-Bibliothek kümmern musst.

Praktische Beispiele

  1. Einfacher Verweis auf Word:

    • Verwende Late Binding, um ein Word-Dokument zu öffnen, ohne die Excel VBA Verweise zu setzen.
    Dim appWd As Object
    Set appWd = CreateObject("Word.Application")
    appWd.Visible = True
    appWd.Documents.Open "C:\Pfad\zu\deinem\Dokument.docx"
  2. Verweise in einer Funktion aktivieren:

    • Du kannst auch eine Funktion erstellen, die prüft, ob ein Verweis schon vorhanden ist, bevor du versuchst, ihn hinzuzufügen.

Tipps für Profis

  • Wenn du häufiger mit VBA Verweisen in Excel arbeitest, erstelle eine Bibliothek von Prozeduren, die die häufigsten Verweise für dich setzen.
  • Halte deine VBA-Projekte modular, um die Wartbarkeit zu erhöhen. Verwende separate Module für verschiedene Funktionen.
  • Teste deinen Code in der entsprechenden Excel-Version, um sicherzustellen, dass alle Verweise korrekt gesetzt werden.

FAQ: Häufige Fragen

1. Was sind VBA Verweise?
VBA Verweise ermöglichen es dir, auf die Funktionen und Objekte anderer Anwendungen, wie Word oder Access, innerhalb deines Excel-Projekts zuzugreifen.

2. Wie aktiviere ich Excel VBA Verweise?
Gehe zu Entwicklertools > Verweise im VBA-Editor, um die benötigten Verweise auszuwählen und hinzuzufügen.

3. Was tun, wenn die Verweise ausgegraut sind?
Überprüfe die Sicherheitseinstellungen in Excel und stelle sicher, dass du den Zugriff auf das VBA-Projektobjektmodell aktiviert hast.

4. Wie kann ich Verweise in verschiedenen Excel-Versionen verwalten?
Verwende Late Binding, um die Probleme mit unterschiedlichen Versionen von Word oder anderen Office-Anwendungen zu umgehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige