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