AW: Verweise XL-XP u. XL-2000
28.09.2003 10:20:40
Darko
Hallo Bjön!
Hab mich mal mit der Materie beschäftigt !
Mein Ziel ist die Arbeitsmappe ohne Probleme unter Office2000 und auch unter Office XP zu bearbeiten und zu speichern, ohne dass es hierbei bemerkbar wird.
Meine Lösung:
Die Arbeitsmappe muss ohne die kritischen Verweise gesspeichert werden, d.h. vor dem Speichern (natürlich nur einmalig) die Verweise auf Outlook und Word entfernen.
Beim start der Arbeitsmappe werden die Verweise hiermit gesetzt:
----------------------
Public Sub CHECKVERSION()
On Error Resume Next
'Gültige Versionen ermitteln und entsprechende Verweise setzen ----------------
If MyBay.Application.Version = "9.0" Or MyBay.Application.Version = "10.0" Then
'Je nach Version - Verweise setzen ---------------------------
If MyBay.Application.Version = "9.0" Then '2000
MyBay.VBProject.References.AddFromGuid "{00062FFF-0000-0000-C000-000000000046}", 9, 0 'Outlook 2000
MyBay.VBProject.References.AddFromGuid "{00020905-0000-0000-C000-000000000046}", 8, 1 'Word 2000
End If
If MyBay.Application.Version = "10.0" Then 'XP
MyBay.VBProject.References.AddFromGuid "{00062FFF-0000-0000-C000-000000000046}", 9, 0 'Outlook XP
MyBay.VBProject.References.AddFromGuid "{00020905-0000-0000-C000-000000000046}", 8, 2 'Word XP
End If
Else
MsgBox "Excel ab Version 9.0 (Excel 2000) erforderlich!", , "Fehler"
MyBay.Close
MyBay.Application.Quit
End If
End Sub
----------------------
Diese Funktion muss beim start automatisch aufgerufen werden.
Hiermit stelle ich sicher, dass die Arbeitsmappe nur unter O-2000 oder O-XP starten kann. Wenn die korrekte Version vorliegt, setzte ich dann - je nach Version - die beiden erforderlichen Verweise (hier sind es Outlook und Word). Wichtig hierbei sind die Versionen der Verweise (Outlook= 9,0 - Word= 8,2 z.B. bei Office XP (10.0).
Nun kann das Dokument mit allen Funktionen bearbeitet werden!
Als zweiten wichtigen schritt müssen diese Verweise beim Schliessen wieder entfernt werden, damit sie Problemlos unter Office-2000 geöffnet werden können.
Dies hab ich so gelöst:
----------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'On Error Resume Next
ActiveWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("Outlook")
ActiveWorkbook.VBProject.References.Remove ThisWorkbook.VBProject.References("Word")
End Sub
-----------------------
Im Arbeitsmappenbereich des Makros gibt es die Funktion "_BeforeClose".
Hier werden die Verweise wieder entfernt. Diese Funktion ist für beide Versionen von Office gültig (also für O2k und OXP).
Somit wird die bearbeitete Mappe wieder ohne Verweise auf Word und Outlook gespeichert und kann nun in jeder beliebigen Version geöffnet werden.
WICHTIG: Unter Excel XP (oder Office XP generell) lassen sich Verweise per Makro nicht standardmäßig setzen. Hierfür muss mann unter "Extras/Makros/Sicherheit" im Register "Vertrauenswürdige Quellen" den Eintrag "Zugriff auf VisualBasic-Projekte vertrauen" auswählen. Sonst kommt ein Sicherheishinweis, und die Verweise werden nicht gesetzt. Somit käme dann auch ein Fehler beim Speichern, weil die zu entfernenden Verweise nicht gesetzt wurden.
Ich hoffe einen guten Tip gegeben zu haben - VBA ist schon ne coole Sache, insbesondere mit Excel.
Grüsse vom Bodensee
DARKO