Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

excel VBA - Microsoft MonthView Control - wstawianie kalendarza jak to zrobić??

uklad_dw 29 Dec 2012 18:41 32976 20
  • #1
    uklad_dw
    Level 9  
    Witam

    Chciałem wstawić kalendarz do arkusza, a raczej opcję wyboru daty przy pomocy UserForm - MonthView tylko jest jeden problem - nie mogę tego znaleźć. szukałem info na ten temat ale nie mogę znaleźć, wiem że powinienem zainstalować jakiś dodatek zawierający Microsoft MonthView Control. Dodatek nazywa się mscomct2.ocx - nie jestem pewien.
    problem polega na tym że nie wiem co o gdzie szukać, jeśli się nie mylę z tym dodatkiem to jak i gdzie go zainstalować??
    pracuję na win7 32bit, Excel 2007



    excel VBA - Microsoft MonthView Control - wstawianie kalendarza jak to zrobić??
    Kamery 3D Time of Flight - zastosowania w przemyśle. Darmowe szkolenie 16.12.2021r. g. 10.00 Zarejestruj się
  • #2
    101pawel
    Level 27  
    uklad_dw wrote:
    ...szukałem info na ten temat ale nie mogę znaleźć...
    Nie szukałeś. Gdybyś szukał (Google w zależności od sformułowanego pytania podaje od kilkuset do kilku mln odsyłaczy), - to w najgorszym wypadku miałbyś problem z zastosowaniem tej kontrolki. Od jakiegoś czasu kontrolka ma nazwę "Microsoft Date and Time Picker Control" a jej plik to jak napisałeś mscomct2.ocx. Jeśli masz Office w wersji Professional, to jest on w instalce i winieneś go mieć w katalogu system32. jeśli masz go w innej lokalizacji, to nic nie szkodzi, natomiast jeśli go nie masz, to po prostu go ściągnij w właściwej do Twojego Excela wersji. Kontrolka mimo obecności na dysku może nie działać, wtedy musisz ją zarejestrować w systemie.
    W wierszu poleceń lub z menu "Uruchom..." wpiszesz:
    regsvr32 c:\windows\system32\mscomct2.ocx
    po uruchomieniu polecenia otrzymasz stosowny komunikat o powodzeniu (lub nie) rejestracji.
    Kolejnym krokiem jest spowodowanie, by [kalendarz] znalazł się na pasku narzędzi VBA i byś mógł go dodać do UserForm. Otworzysz edytor VBA --> Tools --> Additional Controls i postawisz ptaszka na liście okna dialogowego obok nazwy tej kontrolki.

    Pozdrawiam
  • #3
    uklad_dw
    Level 9  
    witam

    szukałem, dotarłem do info na temat Microsoft MonthView Control oraz dodatku mscomct2.ocx, oraz o sposobie jego instalacji, ale oczywiście nie działało więc szukałem pomocy tutaj
    wiem gdzie szukać tego w VBA - "Otworzysz edytor VBA --> Tools --> Additional Controls i postawisz ptaszka na liście okna dialogowego obok nazwy tej kontrolki."
    bo gdybym nie wiedział to skąd miałbym wiedzieć że czegoś brakuje, a gdybym to znalazł to pewnie bym nie zakładał tego tematu. wszystko wydaje się proste....ale niestety nie dla wszystkich, google....oczywiście ale większość wyników które naprowadziły mnie na jakieś konkretne info była w języku angielskim albo dotyczyła innego sys operacyjnego lub MSoffice 2010 no i niestety są różnice a po polsku to tylko beznadziejne fora na których zamiast pomocy znalazłem odpowiedzi typu - poszukaj w google!!!niech ktoś na elektrodzie dokładnie opisze ten problem a nie tylko odsyła do google!!!! jeśli ktoś ma trochę czasu i chęci to proszę w imieniu wszystkich, którzy nie mogą sobie z tym poradzić o instrukcje krok po kroku co, skąd to wziąć i gdzie to zainstalować??

    pozdrawiam
  • #4
    101pawel
    Level 27  
    uklad_dw wrote:
    ... wszystko wydaje się proste....ale niestety nie dla wszystkich, google....oczywiście ale większość wyników które naprowadziły mnie na jakieś konkretne info była w języku angielskim albo dotyczyła innego sys operacyjnego lub MSoffice 2010 no i niestety są różnice a po polsku to tylko beznadziejne fora na których zamiast pomocy znalazłem odpowiedzi typu - poszukaj w google!!!
    Nie gorączkuj się, - jak zobaczyłem Twój temat, spojrzałem do Excela, na liście kontrolek ocx znalazłem mscomct2.ocx, zaptaszyłem, dodałem do userForm, odpaliłem, zadziałało. Koniec, kropka. Nie potrzebowałem niczego gdziekolwiek szukać - mam toto i działa. Myślę, że podobnie jak ja, ma tak 99% potencjalnych użytkowników tego kalendarza. Jakbym natomiast nie miał, to wpisałbym w Google - bo gdzie indziej? - właściwą frazę. Jakbym już "to" miał i mi mimo usilnych starań nie działało, to chyba napisałbym na elektrodę.
    Wracając do meritum sprawy, krok pierwszy: masz ten plik w komputerze albo nie? Jeśli go nie masz, to skopiuj go z instalki. Jeśli nie masz go na instalce to musisz go kupić bo nie jest to ocx darmowy. Napisz jak plik będzie na dysku, dalej pójdzie nam gładko.
    Pozdrawiam
  • #5
    User removed account
    User removed account  
  • #6
    adamas_nt
    Moderator of Programming
    Przeczytałem uważnie wszystkie posty jako moderator i jednocześnie jako średnio zaawansowany użytkownik Excela.

    W zasadzie temat nadaje się do kosza. Jeszcze to rozważę ;)

    Jako Excel'owiec nie spotkałem jeszcze dodatku w postaci kalendarza, który nie powodowałby mniejszych lub większych problemów. Przetestowałem kilka gotowych pomysłów opartych o UserForm i od dobrych kilku lat używam waśnie takiego, zmodernizowanego o kilka dodatkowych, opcjonalnych rzeczy. Dotyczy to zarówno zleceń, jak i arkuszy dla własnych potrzeb.

    Pewnie znajdą się i minusy, ale stabilność jest dla mnie atutem decydującym.

    Dużym plusem takiego rozwiązania jest również to, że plik może "wędrować" po świecie i bez względu na jakim komputerze się znajdzie - działa.

    Oczywiście trzeba nauczyć się instalować i wykorzystywać dodatki, ale może warto rozejrzeć się uważniej po Internecie?
  • #7
    101pawel
    Level 27  
    e-mega wrote:
    ...już płaczę, że mi to tyle czasu zajęło...
    Z drugiej strony gdyby ludek nie był laikiem to by sobie poradził nawet bez googla.
    Nie obraź się, napisałeś homilię i na koniec dodałeś obrazki. Przeczytaj posty kolegi uklad_dw. Przecież on to wszystko co napisałeś i zobrazowałeś wie! Przecież pisze:
    uklad_dw wrote:
    . "wiem gdzie szukać tego w VBA - "Otworzysz edytor VBA --> Tools --> Additional Controls i postawisz ptaszka na liście okna dialogowego obok nazwy tej kontrolki." bo gdybym nie wiedział to skąd miałbym wiedzieć że czegoś brakuje, a gdybym to znalazł to pewnie bym nie zakładał tego tematu."
    Kolega uklad_dw nie widzi w oknie dialogowym [Additional Controls] kontrolki kalendarza. Nie widzi, bo albo mu jej -zarejestrowanej - brakuje w systemie.
    Pozdrawiam

    Dodano po 17 [minuty]:

    adamas_nt wrote:
    W zasadzie temat nadaje się do kosza. Jeszcze to rozważę ;)
    Jako moderator masz taką możliwość, choć jako niemoderator nie widzę powodu; - wątek w wyczerpujący sposób objaśnia dodanie kontrolki ocx do zestawu narzędzi Excela.
    adamas_nt wrote:
    Oczywiście trzeba nauczyć się instalować i wykorzystywać dodatki, ale może warto rozejrzeć się uważniej po Internecie?
    Od kilkunastu lat, ogólnie nazywane dodatki, w tym ActiveX (tu ocx), mogą być stosowanie w pakiecie Office poprzez zaimplementowany VBA. Oczywistość i umiejętność stosowania jest oczywista ;)
    Pozdrawiam
  • #8
    uklad_dw
    Level 9  
    witam, nie mogę doinstalować tego dodatku;/ muszę chyba jeszcze raz zainstalować MS office. chyba, że ktoś ma jakiś pomysł dlaczego nie mogę tego zainstalować;/

    Dodano po 26 [minuty]:

    witam
    a czy mógłby ktoś wrzucić plik z takim kalendarzem??? chciałbym sprawdzić tylko czy działa taki plik jeśli na kompie nie jest zainstalowany mscomct2.ocx
  • #9
    101pawel
    Level 27  
    uklad_dw wrote:
    witam, nie mogę doinstalować tego dodatku;/ muszę chyba jeszcze raz zainstalować MS office. chyba, że ktoś ma jakiś pomysł dlaczego nie mogę tego zainstalować;/
    W przypadku instalacji kontrolek ocx słowa "instalacja" nie musisz brać dosłownie. W systemie posiadasz narzędzie regsvr32 umożliwiające ich rejestrację w systemowym rejestrze. Kalendarz mscomct2.ocx jest formalnie zwykłym plikiem, więc posiada wszystkie jego atrybuty. Przekopiuj go pod adres który podałem Ci w wcześniejszym poście i zarejestruj z linii poleceń, używając składni którą Ci również napisałem. Być może tyle już namieszałeś w rejestrze, że trzeba najpierw cofnąć to co nabroiłeś.
    Nim przystąpisz do kolejnej próby rejestracji - odrejestruj kontrolkę poprzez użycie regsvr32 z parametrem /u Tu o tym poczytaj: Link
    uklad_dw wrote:
    ...czy mógłby ktoś wrzucić plik z takim kalendarzem??? chciałbym sprawdzić tylko czy działa taki plik jeśli na kompie nie jest zainstalowany mscomct2.ocx
    Szkoda zachodu, nie będzie działać.
  • #10
    uklad_dw
    Level 9  
    mając na myśli instalacja mscomct2.ocx miałem na myśli uruchomienie tego, ale teraz to już w ogóle zwraca mi kod błędu.
    "moduł...został załadowany, ale wywołanie funkcji DllRegisterServer nie powiodło się i został zwrócony kod błędu 0x8002801c"

    u kumpla na kompie udało się wstawienie tego kalendarza, bez żadnego problemu
    no i rzeczywiście nie działa u mnie


    excel VBA - Microsoft MonthView Control - wstawianie kalendarza jak to zrobić??
  • #11
    arnoldziq
    Moderator of Programming
    Na 99% masz 64bit wersję Windows 7.
    1. Skopiuj MSCOMCT2.OCX do katalogu c:\windows\sysWOW64.
    2. Musisz użyć regsvr32 jako administrator, a nie jako zwykły użytkownik.
    3. Przy rejestrowaniu komponentu podaj pełną ścieżkę do pliku który rejestrujesz. Jeżeli w nazwie znajdują się znaki spacji, to cała nazwa powinna znajdować się pomiędzy znakami cudzysłowia : " .
  • #12
    User removed account
    User removed account  
  • #13
    101pawel
    Level 27  
    arnoldziq wrote:
    Na 99% masz 64bit wersję Windows 7.
    Nie napisaleś z czego to wnioskujesz? Błąd 0x8002801c jest w zasadzie (dotyczy wszystkich komponentów ActiveX) jednoznacznie zdefiniowany na technecie MS a lekarstwo na niego wielokrotnie potwierdzona na forach programistycznych: "użytkownik próbuje zarejestrować bibliotekę nie mając uprawnień administratora". Błąd o tym kodzie jest komunikowany niezależnie czy system jest 32 czy 64 bitowy. Nie mam czasu na przeprowadzenie testu, ale podejrzewam, że oprócz braku uprawnień może się koledze uklad_dw (do tego) nakładać jeszcze drobnostka, drobne niuanse w rejestracji komponentów 32/64 bitowych w zależności od systemu. By nie pisać nowego posta wklejam tu Link dla kol. uklad_dw. Jest po angielsku, ale napisane bardzo prosto i przejrzyście. No nie ma cudów - ten kalendarz musi odpalić ;)
    Pozdrawiam
  • #14
    uklad_dw
    Level 9  
    Witam

    nie wiem jak mam to powiedzieć bo brakuje mi już sił, męczę się już z tym od jakiegoś czasu, cieszę się bardzo że mój temat wywołał dyskusje ale, poddałem się i odinstalowałem ms office 07, zainstalowałem no i oczywiście idąc z duchem czasu zainstalowałem 2010, zadowolony z siebie włączam Excela 2010 włączam developer no i ku memu zdziwieniu jest to samo co było do tej pory!!!!!!!!!!!!!!! gdzie jest ten p****** kalendarz!!!!!!!!!!!!!!

    Windows 7 (na 100%) 32bit, office 2010.

    co teraz robić??
  • #15
    marcinj12
    Level 40  
    Obserwuję ten wątek od pewnego czasu i utwierdza mnie on w przekonaniu, że moim skromnym zdaniem, najlepszej jak do tej pory rady udzielił adams_nt w poście #6. W tematach Excelowych nie ma sobie równych ;), nie na darmo został też moderatorem (ależ słodzę, aż głupio... ;P).

    Moja opinia o tej kontrolce,oparta na złych z nią doświadczeniach, jest taka sama - jeżeli zależy Ci na stabilności i "wypuszczasz" plik na zewnątrz, to najlepiej tych dodatkowych kontrolek nie używać.

    Sam zaczynając pracę popełniłem ten sam błąd, co Ty - zacząłem używać niestandardowych kontrolek (kalendarz, pasek postępu). Od kiedy firma przeszła z Excela 2003 na 2007, a nawet wcześniej, zaczęły się problemy - pliki "same z siebie" przestawały się uruchamiać, wyrzucały nic nie mówiące wyjątki, które znikały, jeśli wyrzucić niestandardową kontrolkę.
    Czarę goryczy przelał moment, kiedy po którejś z rzędu automatycznej aktualizacji Windowsa posypały się pliki korzystające z tej kontrolki w połowie zakładu, w kilkunastu różnych plikach - chyba w tym dniu odebrałem najwięcej telefonów w życiu ;) Akurat ta biblioteka lubi być jakoś wyjątkowo często aktualizowana. A gdzie przesiadka na Windows 7, Office 2010 czy kolejne, systemy 32 a 64 bitowe??

    Można zrobić instalator tej biblioteki automatycznie rejestrujący ją w systemie (też to kiedyś przerabiałem), ale nie dość że musisz "wlec"za plikiem instalkę i pamiętać, żeby ją odpalać na każdym komputerze z plikiem, to jeszcze w ten sposób zastąpisz "oryginalną" bibliotekę .ocx z Offica - dasz głowę, że to nie spowoduje żadnych błędów w systemie?? Zdaje mi się, choć nie mogę tego potwierdzić, że jest ona współdzielona z innymi aplikacjami i Windowsem.

    Od tego momentu podziękowałem za wszystkie niestandardowe kontrolki - Excel sobie z tym nie radzi zbyt dobrze. Zamiast pasku postępu napisałem sobie swoja własną User Formę z rozszerzanym niebieskim labelem, a kalendarz zastąpiłem zwykłym texboxem,w którym funkcją IsDate() sprawdzam, czy na pewno podano datę.
    Użytkownikowi zwykle rybka, czy wybierze sobie datę z coolerskiego kalendarza, czy wpisze ją z palca do textboxa - grunt, żeby program działał.

    Jak adams_nt sugerował, można poszukać na necie lub, wykorzystując naprawdę podstawowe funkcje operacji na datach, samemu napisać swój własny kalendarz ze standardowych kontrolek - przyciski, labele.

    Może do czegoś Ci się te informacje przydadzą. Ja proponuję użyć odpowiednio sformatowanego labela + sprawdzanie poprawności daty. Wybór, oczywiście, należy do Ciebie.
    Pozdrawiam
  • #16
    adamas_nt
    Moderator of Programming
    :arrow: marcinj12 Do pięt Ci nie dorastam, a Ty takie rzeczy...

    Ale to właśnie chciałem przekazać. Również zostałem "wyleczony" z większości super-dodatków przez kilka nieprzespanych (z nosem przy ekranie) nocy.
    Oczywiście nie wszystko jest "be". Kalendarz jest jednak (jak widać) "nieznośnie uparty"...

    Od moderatora: Dział poświęcony jest programowaniu, nie problemami z instalowaniem dodatków Excela. Stąd moje, "służbowe" wątpliwości.

    Do Autora: gratuluję charakteru, nie poddajesz się tak łatwo ;) Korzyść taka, że nauczysz się sporo. Ale spróbuj, dla własnej satysfakcji (o nerwach nawet nie wspomnę), stworzyć coś własnego...
  • #17
    uklad_dw
    Level 9  
    :) dzięki adamas_nt za "Do Autora: gratuluję charakteru, nie poddajesz się tak łatwo"
    a problem chyba wiąże się z programowaniem gdyż kontrolki są niejako składnikiem VBA i raczej nie są od tak sobie stosowane w Excelu.

    Niestety nie jestem biegłym programistą a raczej świerzakiem w VBA i mam taka prośbę - czy ma ktoś jakąś instrukcję jak krok po kroku zrobić taki kalendarz??? nie proszę o gotowca (no chyba że ktoś jest bardzo życzliwy i pozwoli zaoszczędzić mi kilka dni a raczej nocy pracy) chodzi mi o instrukcje miło by było z jakimś screenem albo coś.

    Fajnie by było żeby się otwierał po kliknięciu na komórkę albo na mały button przy komórce do której ma zwrócić zaznaczoną w kalendarzu datę.
  • Helpful post
    #18
    marcinj12
    Level 40  
    uklad_dw wrote:
    czy ma ktoś jakąś instrukcję jak krok po kroku zrobić taki kalendarz??? nie proszę o gotowca (no chyba że ktoś jest bardzo życzliwy i pozwoli zaoszczędzić mi kilka dni a raczej nocy pracy) chodzi mi o instrukcje miło by było z jakimś screenem albo coś.
    A proszę, kilkadziesiąt minut pracy i cierpliwości ;) - może żadna francja-elegancja, ale coś podobnego do kalendarza - forma, oparta głównie na labelach, pozwalająca na wybór daty myszą. Łatwo możesz sobie ją wystylować lub przerobić zachowanie na swój sposób. Proponuję przeanalizować kod - można by było tworzyć labele z dniami dynamicznie oraz dynamiczni przypisywać im zdarzenia, ale przy 42 jeszcze dało się wyklikać ;)

    Kod poniżej oraz w załączniku:
    Code: vb
    Log in, to see the code


    Formę pokazujesz tak, jak normalną. Ma dwie publiczne właściwości: Wybrano (True lub False, pokazuje czy użytkownik kliknął jakąś datę) oraz WybranaData, czyli data którą użytkownik wybrał. Wywołujesz ją np. tak:
    Code: vb
    Log in, to see the code
  • #19
    uklad_dw
    Level 9  
    Piękne dzięki marcinj12 o TO chodziło:)

    Mając na myśli instrukcja myślałem o napisaniu dlaczego i po co wstawiamy poszczególne elementy kodu:) przy każdej linijce kodu opis co jest co, ale i tak dziękuję:)
  • #20
    uklad_dw
    Level 9  
    Witam

    W sumie to temat już chyba zamknięty?!
    kalendarz marcinj12 jest prawie identyczny jak ten z Microsoft MonthView Control a raczej jak zaznaczył 101pawel Microsoft Date and Time Picker Control
    jest prosty i ładny

    Dziękuję wszystkim uczestnikom dyskusji na tym forum
    oraz moderatorowi za to, że nie usunął tego postu:)

    pozdrawiam Wszystkich

    P.S. Dzisiaj stworzyłem okno powitalne ze zdjęciem oraz muzyką:)
  • #21
    adamas_nt
    Moderator of Programming
    uklad_dw wrote:
    P.S. Dzisiaj stworzyłem okno powitalne ze zdjęciem oraz muzyką
    Cała kupa satysfakcji po naszej stronie :)
    Do "zobaczenia" w takim razie w następnych tematach. Ten zamykam...