Witam.
Mam problem z kontrolką MonthView control (mscomct2.ocx) konkretniej w firmie posiadam dwa rodzaje komputerów.
komputery wersji A - posiadają kontrolkę mscomct2.ocx w wersji SP4
komputery wersji B - posiadają kontrolkę mscomct2.ocx w wersji SP6
Plik zapisany na komputerze A działa na komputerach wersji B, odwrotnie jednak nie (zapisany w nowszej wersji nie daje się otworzyć).
Mniej jest komputerów w wersji B (nowszych) dlatego też podjąłem się karkołomnej próby downgrade. Mimo szczerych chęci i wyrejestrowania jej ręcznie z rejestru Office jest uparty. Kroki jakie podjąłem
- regsvr32.exe mscomct2.ocx -u
- Zastąpienie pliku mscomct2.ocx w folderze windows\system32 starszą wersją
- regscr32.exe mscomct2.ocx
Mimo powyższych operacji gdy w vba excela wchodzę do referencji i wybieram plik podając ręcznie ścieżkę on nadal uważa że jest to SP6 i przy próbie wklejenia kontrolki na formatkę wywala błąd "Class is not registred". Gdy tylko zastąpię plik
nowszą wersją wszystko działa poprawnie.
Próbowałem również wyrejestrować excela poprzez komendę %ścieżka do pliku excel.exe% /unregserver i zarejestrowanie go ponownie, lecz niestety nie przyniosło to oczekiwanego rezultatu
Moje pytania:
- Czy da się do projektu VBA dołączyć kontrolkę (wtedy z automatu zaktualizował bym wszystkie komputery do nowszej wersji)
- Jak wyrejestrować w excelu całkowicie tą kontrolkę aby móc ją zastąpić starszą z powodzeniem?
Ręczne zaktualizowanie wszystkich komputerów do nowszej wersji nie wchodzi w grę - jest ich po prostu za dużo.
Kolega tutaj
http://stackoverflow.com/questions/10202719/activex-control-in-a-excel-file-gives-could-not-load-an-object-error-on-som
ma podobny problem, jednak finalnie nie został on rozwiązany