Czy mój system współpracuje z kontrolkami CC
by vbatools on Nov.15, 2013, under Excel, Outlook, Porady, Power Point, Word
W systemie Windows można zainstalować biblioteki między innymi odpowiedzialne za współpracę z elementami ActiveX. W odniesieniu do Office rozróżniamy standardowe dwie biblioteki na których można oprzeć większość z tworzonych programów. Ich posiadanie i prawidłowe funkcjonowanie jest elementarne dla każdego kto chce korzystać z automatyzacji.
Pierwszą z nich jest pakiet Common Controls mscomctl.ocx
Zawiera on kontrolki:
- ImageList (odpowiedzialna za osadzenie obrazków i zarządzanie nimi jak kolekcją)
- ListView (okno reprezentujące ikony no plików, jak i widok raportu z możliwością zaznaczania kolumn jak i sortowania danych)
- ProgressBar (pasek postępu)
- TreeView (drzewo struktury poziomów informacji)
- Slider (suwak od 0 do 100%)
- ToolBar (możliwość tworzenia menu obrazkowego)
- TabStrip (zakładki kart z możliwością osadzenia ikon jak i różnicowania danych rożną czcionką)
- StatusBar (zarezerwowanie przestrzeni pod spodem okna formularza i przekazanie tam dodatkowych informacji)
- ImageComboBox (pole wyboru z możliwością dodania Ikon do wybieranych elementów, jak i nadania im odrębnego koloru)
Drugi pakiet to Common Controls mscomct2.ocx
W jego skład wchodzą:
- MonthView (data wybierana z kalendarza wyświetlonego jak lista wyboru)
- Date and Time Picker (standardowy kalendarz)
- Flat Scrollbar (inny pasek przewijania niż w FM20.dll)
- UpDown (inny SpinButton niż w FM20.dll)
- Animation (możliwość uruchomienia pliku z animacją z ustawieniem początku i końca wyświetlania)
Wybór i podłączenie kontrolek do toolboxa to nic innego jak wybranie go z referencji, co innego jeśli nie mamy tam kontrolki CC1 lub CC2 i opieramy się na standardowym zestawie FM20. Instalacja kontrolek powinna być realizowana automatycznie, po przez instalacje pakietu jak i jego licznych poprawek. Niestety życie pokazuje że aktualizacje wyrejestrują je z systemu, aby wykonać modyfikacje dążące do zabezpieczenia ich przed manipulacjami osób trzecich. Ataki na kontrolki skrzętnie opisywane są przez producenta na łamach swojego biuletynu. Oczywiście rozwiązanie jest patowe co zmusza użytkownika lub programistę do cyklicznego przywracania wpisów rejestru po instalacji poprawki.
W takim przypadku należy wyjść z aplikacji office i ręcznie wykonać ich rejestrację posiadając prawa administratora danego konta. Komendy jakie należy wpisać w oknie poleceń (lub w CMD.exe) podaje poniżej. W przypadku braku ich posiadania można je pobrać z mojego OneDrv. Zestawy dla każdej z wersji Office w wersji bibliotek 6.0 (SP6). W przypadku problemów z instalacją kontrolki (kod błędu 0x8002801x), musisz wywołać program jako administrator.
W systemie W8-8,1\10 uruchomienie jako administrator realizuje się następująco:
Komenda rejestrująca dla systemów 32-bit dla kontrolek umieszczonych w C:\Windows\System32
- %systemroot%\system32\regsvr32 MSCOMCTL.OCX
- %systemroot%\system32\regsvr32 MSCOMCT2.OCX
Dla systemów 64-bit lokalizacja kontrolek to: C:\Windows\SysWow64
- %systemroot%\sysWOW64\regsvr32 MSCOMCTL.OCX
- %systemroot%\sysWOW64\regsvr32 MSCOMCT2.OCX
Prosty test na prawidłowość instalacji, polega na uruchomieniu pliku, który zawiera daną kontrolkę (test CC1 oraz test na CC2) lub stworzenie formularza zawierającego jedną z nich. Ta druga opcja jest pewniejsza, w przypadku kiedy rozwiązanie stworzone zostało na x64 a nie na x86 (kontrolka nie przełącza się automatycznie). Rozwiązaniem na tego problemu jest stworzenie kontrolki w locie, więc powołanie się na późne wiązanie, które samo dopasuje ścieżkę rejestracji.
W przypadku braku współpracy systemu należy uruchomić naprawę pakietu office dostępną z panelu sterowania/programy/office (wersja)/zmień/napraw
Jeśli funkcjonalność kontrolek nie nastręczała do tej pory problemu, a ich brak działania jest powodem aktualizacji poprawek do Office to wystarczy usunąć pliki tymczasowe.
Sprawa jest cykliczna ponieważ już kolejny raz producent podczas wpychania zabezpieczeń czy nowości zapomniał usunąć tymczasowe pliki kontrolek. W konsekwencji Arkusze oparte na rozwiązaniach ActiveX przestają funkcjonować właściwie.
Oto komunikat jaki pojawia się w momencie próby utworzenia nowego obiektu.
Rozwiązaniem jest ich skasowanie. Zostaną one utworzone w momencie z ich skorzystania.
Usunąć je można po przez polecenia umieszczone w pliku tekstowy z rozszerzeniem *.bat. Plik ten należy utworzyć a następnie uruchomić.
Polecenia można pobrać zgodnie z tym linkiem uwzględniające wszystkie wersje office
@del “%USERNAME%\Application Data\Microsoft\Forms\*.exd” /s
@del “%USERNAME%\AppData\Roaming\Microsoft\Forms\*.exd” /s
@del “%Temp%\VBE\*.exd” /s
@del “%Temp%\Excel8.0\*.exd” /s
@del “%Temp%\Word8.0\*.exd” /s
rem itp umieszczone w pow. linku…
Nie są potrzebne prawa administratora aby usunąć zbędne dane!
Polecam również uwadze artykuł: Dlaczego office x86 (32bit) a nie (64bit)
Edit: 2016-07-12
W instalacjach VBATools począwszy od pow. daty kontrolki CC będą instalowane i rejestrowane automatycznie.
(c) Shon Oskar – www.VBATools.pl
Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.