Verweis auf Kalendersteuerelement per VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox


Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Verweis auf Kalendersteuerelement per VBA
von: Rainer
Geschrieben am: 25.06.2002 - 13:29:17

Hallo Profis!

Im heutigen Thread "Oh je.....Datum/Kalender - Nancy 25.06.2002 - 10:39:25 (6)" ging es um das Einbinden des Kalendersteuerelementes.

Ich möchte eine Datei, in der ich so ein Kalendersteuerelement in eine Userform integriert habe, weitergeben. Soweit ich von Hajo gehört habe, ist dies nur dann möglich, wenn auf dem Zielrechner bereits ein Verweis auf das Kalendersteuerelement eingerichtet ist. (im Archiv habe ich bis jetzt nur herausgefunden, dass es zu Access gehört. Bei mir ist der Pfad "C:\WINNT\System32\MSCAL.OCX" (für Vers. 8.0).

Ich möchte aber z.B. mit Workbook_Open() prüfen, ob der Verweis vorhanden ist, wenn nicht soll er per VBA erzeugt werden und wenn möglich auch unabhängig vom verwendeten Betriebssystem (Wenn's nicht zu komplex ist).

Kann mir hier jemand helfen?

Danke und lieben Gruß
Rainer



nach oben   nach unten

Re: Verweis auf Kalendersteuerelement per VBA
von: Otto
Geschrieben am: 27.06.2002 - 11:53:29

Hallo Rainer,

Ein ähnliches Problem besteht bei Microsoft Visual Basic for Applications Extensibility, das immer dann auftritt, wenn eine Arbeitsmappe mit diesem Verweis von Excel 2000 nach 98 tranportiert wird.
Der Verweis ist danach zerbrochen. Deshalb lasse ich am Anfang im Workbook Open die folgende Prozedur laufen, und habe keine Probleme mehr. Ich kann jetzt leider nicht testen, wie Du das für das Kalendersteuerelement abändern musst, bin aber an der Lösung auch sehr interessiert.
Füge für den fraglichen GUID die korrekten Werte ein.

Public Sub VerweiseAktualisieren()  
   Dim blnTest As Boolean  
   Dim intZeile As Integer    
   Dim lngVerweise As Long  
   Dim objVerweis As Object  
   Dim strGUID As String  
   Dim lngMajor As Long  
   Dim lngMinor As Long  
   Dim wkbHier As Workbook  
   Dim wkbNeu As Workbook  
   Dim wksNeu As Worksheet  
   
   blnTest = True
   Set wkbHier = ActiveWorkbook
   If blnTest Then  
      MsgBox "Start Verweis"
      lngVerweise = ThisWorkbook.VBProject.References.Count
      MsgBox "Es gibt " & lngVerweise & " Verweise"
      Workbooks.Add
   End If  
   Set wkbNeu = ActiveWorkbook
   wkbNeu.Activate
   Set wksNeu = wkbNeu.Sheets(1)
   With wksNeu
      If blnTest Then  
         .Cells(1, 1).Value = "Nr"
         .Cells(1, 2).Value = "Name"
         .Cells(1, 3).Value = "GUID"
         .Cells(1, 4).Value = "Description"
         .Cells(1, 5).Value = "FullPath"
         .Cells(1, 6).Value = "Major"
         .Cells(1, 7).Value = "Minor"
         intZeile = 1
      End If  
      For Each objVerweis In wkbHier.VBProject.References  
         intZeile = intZeile + 1
         If objVerweis.IsBroken Then  
            strGUID = objVerweis.GUID
            lngMajor = objVerweis.Major
            lngMinor = objVerweis.Minor
            If blnTest Then  
               .Cells(intZeile, 3).Value = objVerweis.GUID
               .Cells(intZeile, 6).Value = objVerweis.Major
               .Cells(intZeile, 7).Value = objVerweis.Minor
            End If  
            If strGUID = "{0002E157-0000-0000-C000-000000000046}" Then  
               wkbHier.VBProject.References.Remove objVerweis
               wkbHier.VBProject.References.AddFromGuid _
                GUID:=strGUID, Major:=lngMajor, Minor:=0
            Else
               MsgBox "Problem bei unbekanntem GUID: " & strGUID &  _
                vbCrLf &"Major: " & lngMajor & vbCrLf & _
                "Minor: " & lngMinor & vbCrLf
               wkbHier.VBProject.References.Remove objVerweis
               wkbHier.VBProject.References.AddFromGuid _
                GUID:=strGUID, Major:=lngMajor, Minor:=0
              'MsgBox "Problem bei " & objVerweis.Name
            End If  
         Else
            If blnTest Then  
               MsgBox "kein Problem bei Name: " & objVerweis.Name & _
                vbCrLf & "GUID: " & objVerweis.GUID & vbCrLf & _
                "Description: " & objVerweis.Description & vbCrLf & _
                "FullPath: " & objVerweis.FullPath & vbCrLf
               .Cells(intZeile, 1).Value = intZeile
               .Cells(intZeile, 2).Value = objVerweis.Name
               .Cells(intZeile, 3).Value = objVerweis.GUID
               .Cells(intZeile, 4).Value = objVerweis.Description
               .Cells(intZeile, 5).Value = objVerweis.FullPath
               .Cells(intZeile, 6).Value = objVerweis.Major
               .Cells(intZeile, 7).Value = objVerweis.Minor
            End If  
         End If  
      Next objVerweis
   End With  
End Sub  

Gruß Otto

nach oben   nach unten

Re: Verweis auf Kalendersteuerelement per VBA
von: Rainer
Geschrieben am: 27.06.2002 - 12:41:43

Lieber Otto!

Herzlichen Dank! Den Code muss ich mir in einer ruhigeren Stunde auf der Zunge zergehen lassen! ;-) - da kann man viel daraus lernen.

Soviel habe ich inzwischen herausgefunden, dass ich eigentlich keine Probleme haben dürfte, wenn das Office 2000-Paket inkl. Access am Zielrechner installiert ist. (ich kann mich dumpf an eine Aussage von Hans erinnern, dass dieses ein Teil von Access ist!) Ich muss das daher nochmals testen, indem ich Access zuvor deinstalliere oder einen Rechner finden, der A. nicht installiert hat. Dazu habe ich zu Hause noch keine Zeit gehabt.

Um den Lerneffekt zu beschleunigen, kannst du mir bitte sagen, was die Zeile mit dem 'If strGUID = "{0002E157-0000-0000-C000-000000000046}" ' genau bedeutet, bzw. was das mit den "Microsoft Visual Basic for Applications Extensibility" eigentlich ist, bzw. wo kann ich diesbezügliche Infos erhalten? - Diesbezüglich betrete ich für mich absolutes Neuland!

Nochmals herzlichen Dank und liebe Grüße
Rainer


nach oben   nach unten

Re: Verweis auf Kalendersteuerelement per VBA
von: Otto
Geschrieben am: 27.06.2002 - 13:47:20

Hallo Rainer,

für den ersten Absatz: Danke für die Blumen. Der zweite Absatz ist absolut korrekt.
Die VBA-Erweiterungen enthalten Zusatzfunktionen, die normalerweise nicht vorhanden sind (zB VBComponents).
0002E157-0000-0000-C000-000000000046 ist der GUID der VBA-Erweiterungen, die ich lösche und neu definiere. Mein Makro erzeugt, wenn blnTest gesetzt ist, ein ausführliches Verzeichnis aller Verweise, inklusive GUID. Um zu erfahren, was GUID bedeutet, lade meine Makro in den VBE, setze den Cursor auf AddFromGuid und drücke beherzt die F1-Taste, dann erhältst Du das erklärt. Die GUIDs (global unique identifier) sind eindeutig.
Für Dich ist es also wichtig, herauszufinden, was der GUID des Kalendersteuerelemts ist.

Gruß Otto

nach oben   nach unten

Re: Verweis auf Kalendersteuerelement per VBA
von: Rainer
Geschrieben am: 27.06.2002 - 13:55:53

Lieber Otto!

Das hilft mir wirklich weiter! Herzlichen Dank!

Lieben Gruß
Rainer

P.S. Jetzt mache ich für heute Schluss! ;-)))


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Verweis auf Kalendersteuerelement per VBA"