Grups de Google ja no admet publicacions ni subscripcions noves de Usenet. El contingut antic es pot continuar consultant.

Kalendersteuerelement mscal.ocx

59 visualitzacions
Ves al primer missatge no llegit

Ralf Dorn

no llegida,
10 de set. 2008, 23:06:2010/9/08
a
Guten Morgen alle zusammen,

habe das Problem, dass meine User verschiedene Versionen von Excel haben.
Die einen haben Excel XP und die anderen haben schon 2003 oder 2007. Mein
VBA Programm enthält eine UserForm mit einem Kalendersteuerelement.

Ich stellte fest, dass manche Rechner nach dem Start des Programms einfach
nach dem aktivieren der Makros abstürzten. Nach langem Suchen merkte ich,
dass es an den verschiedenen Versionen der mscal.ocx Datei lag.

Die eine Excel Version nutzte das Kalendersteuerelement 10.0 und die anderen
8. Also versuchte ich alle auf 8 umzustellen indem ich die entsprechende
Datei auf alle Rechner kopierte und dann den Verweis darauf setzte. Das
funktionierte aber nicht. Dann nahm ich eben die Version 10 und machte das
selbe Spiel wie vorher mit der 8er.

Das hat jetzt funktioniert. Aber nur eine Weile. Nach ca. 4 Wochen
funktioniert es jetzt teilweise nicht mehr. Das Programm stürzt nicht ab
aber beim Aufruf der Userform ist auf dem kalender keine Tageszahlen mehr
vorhanden.


Wie kann ich ereichen, dass auf allen Excel Versionen das entsprechende
Kalenderelement eingebunden wird??

Einen schönen Gruß


Ralf Dorn


Ralf Dorn

no llegida,
10 de set. 2008, 23:34:5410/9/08
a
Ach ja,

vielleicht sollte ich noch erwähnen, dass sich die Datei auf einem
Netzlaufwerk und nicht lokal befindet.

Ralf Dorn


Thomas Ramel

no llegida,
11 de set. 2008, 1:09:4611/9/08
a
Grüezi Ralf

Ralf Dorn schrieb am 11.09.2008

> habe das Problem, dass meine User verschiedene Versionen von Excel haben.
> Die einen haben Excel XP und die anderen haben schon 2003 oder 2007. Mein
> VBA Programm enthält eine UserForm mit einem Kalendersteuerelement.
>
> Ich stellte fest, dass manche Rechner nach dem Start des Programms einfach
> nach dem aktivieren der Makros abstürzten. Nach langem Suchen merkte ich,
> dass es an den verschiedenen Versionen der mscal.ocx Datei lag.
>
> Die eine Excel Version nutzte das Kalendersteuerelement 10.0 und die anderen
> 8. Also versuchte ich alle auf 8 umzustellen indem ich die entsprechende
> Datei auf alle Rechner kopierte und dann den Verweis darauf setzte. Das
> funktionierte aber nicht. Dann nahm ich eben die Version 10 und machte das
> selbe Spiel wie vorher mit der 8er.

...dir ist bewusst, dass das u.U. lizenzrechtliche Probleme mit sich
bringen kann...?

> Wie kann ich ereichen, dass auf allen Excel Versionen das entsprechende
> Kalenderelement eingebunden wird??

Arbeite nicht mit einem 'harten' Verweis auf die Bibliothek sondern erzeuge
die Verbindung zur Laufzeit über 'late binding', dann wird die jeweils auf
dem Rechner registrierte Bibliothek verwendet.

Hier in paar Links zu diesem Thema:


http://support.microsoft.com/?scid=kb%3Bde%3B245115&x=16&y=11
http://support.microsoft.com/default.aspx?scid=kb;EN-US;247579
http://support.microsoft.com/?scid=kb;en-us;201710
http://word.mvps.org/faqs/interdev/EarlyvsLateBinding.htm

http://www.online-excel.de/excel/singsel_vba.php?f=41


Mit freundlichen Grüssen
Thomas Ramel

--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-3]
Microsoft Excel - Die ExpertenTipps

Peter Schleif

no llegida,
11 de set. 2008, 2:54:2511/9/08
a
Ralf Dorn schrieb am 11.09.2008 05:06 Uhr:
>
> Die einen haben Excel XP und die anderen haben schon 2003 oder 2007. Mein
> VBA Programm enthält eine UserForm mit einem Kalendersteuerelement.
> Die eine Excel Version nutzte das Kalendersteuerelement 10.0 und die anderen
> 8.

Warum verwendest Du so alte Kalender-Controls, wenn es doch auf
2003/2007 zum Einsatz kommen soll?

8.0 ist Excel 97
10.0 ist Excel 2002


> Das hat jetzt funktioniert. Aber nur eine Weile. Nach ca. 4 Wochen
> funktioniert es jetzt teilweise nicht mehr. Das Programm stürzt nicht ab
> aber beim Aufruf der Userform ist auf dem kalender keine Tageszahlen mehr
> vorhanden.

Vielleicht ein Office- und/oder Windows-Update, dass alte Zustände
wieder hergestellt hat?

Hast Du mal probiert die neue Datei explizit zu registrieren?

regsvr32.exe E:\Excel\MSCAL.OCX


> Wie kann ich ereichen, dass auf allen Excel Versionen das entsprechende
> Kalenderelement eingebunden wird??

Mit einer korrekten Registrierung sollte das eigentlich automatisch
passieren. Zumindest mit den Versionen 9/10/11 klappt es bei mir
problemlos.


Peter

Ralf Dorn

no llegida,
11 de set. 2008, 12:41:3011/9/08
a
Hallo Thomas,


ich verstehe die Beispiele nicht ganz. Hast du da mal ein Beispiel mit der
mscal.ocx? Lizenzrechtliche Probleme habe ich damit nicht. Wir haben alle
Lizenzen. Nur auf manchen PC's werden die Vorgängerversionen Gebraucht weil
sonst manche VBA teile nicht mehr funktionieren.

Kann ich nicht irgendwie die mscal.ocx im Ordner wo die Excel Datei liegt
hinterlegen und dann beim Start diese immer mit einbinden oder so etwas
ähnliches.

Beim Workbook_Open Ereigniss mit shell("regsvr32.exe c:\excel\mscal.ocx")
die richtige einbinden? Und natürlich vorher mit regsvr32.exe /u mscal.ocx
die Alte entfernen?

Schönen Feierabend

Ralf Dorn

Ralf Dorn

no llegida,
11 de set. 2008, 14:56:0211/9/08
a
Hallo Peter,

> Hast Du mal probiert die neue Datei explizit zu registrieren?
>
> regsvr32.exe E:\Excel\MSCAL.OCX
>

Deine Idee finde ich ganz gut. Aber es sind viele Rechner und es kommt auch
manchmal ein neuer hinzu. Daher wäre mir eine Möglichkeit beim Aufruf der
Excel Datei lieber.

Werde eine Kobination aus deinem Vorschlag und meinen Gedanken morgen
ausprobieren ;-)

Gruß

Ralf


Peter Schleif

no llegida,
11 de set. 2008, 15:47:0211/9/08
a
Ralf Dorn schrieb am 11.09.2008 20:56 Uhr:
>>
>> regsvr32.exe E:\Excel\MSCAL.OCX
> Deine Idee finde ich ganz gut. Aber es sind viele Rechner und es kommt auch
> manchmal ein neuer hinzu. Daher wäre mir eine Möglichkeit beim Aufruf der
> Excel Datei lieber.

Dann bitte doch deinen Netzwerk-Admin den Registrierungsbefehl is
Logon-Script zu packen. Ist zwar unüblich regsvr32.exe bei jeder
Anmeldung auszuführen, weil man es ja eigentlich nur einmal machen
muss, aber immer noch besser als im Workbook_Open.

Peter

Thomas Ramel

no llegida,
11 de set. 2008, 16:07:2811/9/08
a
Grüezi Ralf

Ralf Dorn schrieb am 11.09.2008

> Hallo Thomas,

Dann wirds aber Zeit, dich mit der Thematik zu befassen... ;-)

> Hast du da mal ein Beispiel mit der mscal.ocx?

Da muss ich mich auch erst reinarbeiten - es ging mehr ums Prinzip denn die
konkrete Umsetzung, zumal wir auch deinen Code nicht kennen.

> Lizenzrechtliche Probleme habe ich damit nicht.
> Wir haben alle Lizenzen.

OK das kann ich nicht beurteilen.

> Kann ich nicht irgendwie die mscal.ocx im Ordner wo die Excel Datei liegt
> hinterlegen und dann beim Start diese immer mit einbinden oder so etwas
> ähnliches.

Mit 'late binding' ist das nicht notwendig, da dann immer die auf dem
Rechner gerade registrierte Version verwendet wird.

> Beim Workbook_Open Ereigniss mit shell("regsvr32.exe c:\excel\mscal.ocx")
> die richtige einbinden? Und natürlich vorher mit regsvr32.exe /u mscal.ocx
> die Alte entfernen?

Das scheint mir dann mit Kanonen auf Spatzen geschossen - dann schon eher
eine selbstgebaute Userform für die Auswahl des Datums die dem
Kalendersteuerelement nachempfunden ist. Das könne/dürfe deine Probleme
nachhaltiger lösen wenn eine derartige Vielfalt an Installtionen vorhanden
ist.

Ralf Dorn

no llegida,
12 de set. 2008, 1:01:1912/9/08
a
Guten Morgen Peter,

danke für den Tipp. Da unser Admin so etwas bestimmt nicht machen wird,
werde ich einfach ein Makro schreiben, dieses dann mit einer Tastenkombi
starten. Das mache ich dann nur wenn ich sehe, dass der PC die falsche
mscal.ocx hat.

Ralf Dorn

no llegida,
12 de set. 2008, 1:07:5512/9/08
a
Hallo Thomas,

> Das scheint mir dann mit Kanonen auf Spatzen geschossen - dann schon eher
> eine selbstgebaute Userform für die Auswahl des Datums die dem
> Kalendersteuerelement nachempfunden ist. Das könne/dürfe deine Probleme
> nachhaltiger lösen wenn eine derartige Vielfalt an Installtionen vorhanden
> ist.

ok, danke für deine Hilfe. Werde es wie weiter unten beim Peter geantwortet
machen. Ich denke, das ist eine einigermaßen akzeptable Lösung.

Peter Schleif

no llegida,
12 de set. 2008, 4:05:3212/9/08
a
Ralf Dorn schrieb am 12.09.2008 07:01 Uhr:
>
> danke für den Tipp. Da unser Admin so etwas bestimmt nicht machen wird,
> werde ich einfach ein Makro schreiben, dieses dann mit einer Tastenkombi
> starten. Das mache ich dann nur wenn ich sehe, dass der PC die falsche
> mscal.ocx hat.

Dann willst Du also jedesmal warten, bis die Anwednung nicht mehr
funktioniert oder sogar der Rechner abstürzt? tsss, tsss, tsss

Außerdem ist fraglich, ob es direkt helfen wird. Auch mit late-binding
ist das fraglich. AFAIK verwendet Excel die Calendar-Version, die zum
Zeitpunkt des Excel-Starts registiert war und _nicht_ zum Zeitpunkt
des Ladens der Mappe. Du müsstest also Excel neu starten.

Alternativ zum Logon-Script, könntest Du auch auf jedem Rechner ein
VB-Script in den Autostart-Ordner legen oder über eine der anderen
bekannten AutoRun-Methoden starten. Muss der Admin ja nicht wissen ;-)

'/mscal.vbs/
'--------------------------------------------------
Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "regsvr32.exe /s E:\Excel\MSCAL.OCX", 0


Vielleicht noch zwei Anmerkungen zu Registrierung:

1. Du brauchst nicht un-registrieren (Schalter /u) Der alte Kalender
wird automatisch rausgeschmissen, wenn ein neuer registriert wird.

2. Silent-Modus um die Rückmeldung zu unterdrücken (Schalter /s)

Peter

thomas...@gmail.com

no llegida,
12 de set. 2008, 5:03:5112/9/08
a
Grüezi zusammen

On 12 Sep., 10:05, Peter Schleif <peter.schleif.s...@gmx.de> wrote:
>
> > danke für den Tipp. Da unser Admin so etwas bestimmt nicht machen wird,
> > werde ich einfach ein Makro schreiben, dieses dann mit einer Tastenkombi
> > starten. Das mache ich dann nur wenn ich sehe, dass der PC die falsche
> > mscal.ocx hat.
>

> Außerdem ist fraglich, ob es direkt helfen wird. Auch mit late-binding
> ist das fraglich. AFAIK verwendet Excel die Calendar-Version, die zum
> Zeitpunkt des Excel-Starts registiert war und _nicht_ zum Zeitpunkt
> des Ladens der Mappe. Du müsstest also Excel neu starten.

Late Binding mit OCX-Komponenten klappt nicht, da war ich auf dem
falschen Dampfer - sorry.

Daher plädiere ich für eine eigene Userform (es gibt da auch
'vorgefertigte Produkte'), die ganz einfach mit der Mappe mitgeführt
wird.
Das erübrigt dann alle Versions-Konflikte, da alles in der Mappe liegt
und man nicht mehr auf installierte, fehlende oder falsche Komponenten
prüfen muss.

Gerade in diesem gemischen Umfeld scheint mir das längerfristig die
weniger stressige Lösung zu sein.

Alternativen die sich anbieten wären das Monthview-Steurelement
(http://msdn.microsoft.com/en-us/library/aa733656(VS.60).aspx)


--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -

0 missatges nous