Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

uklad_dw 29 Gru 2012 18:41 22719 20
  • #1 29 Gru 2012 18:41
    uklad_dw
    Poziom 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ć??

    0 20
  • #2 29 Gru 2012 23:08
    101pawel
    Poziom 24  

    uklad_dw napisał:
    ...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

    0
  • #3 30 Gru 2012 15:39
    uklad_dw
    Poziom 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

    0
  • #4 30 Gru 2012 22:32
    101pawel
    Poziom 24  

    uklad_dw napisał:
    ... 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

    0
  • #5 31 Gru 2012 00:34
    23844
    Użytkownik usunął konto  
  • #6 31 Gru 2012 06:12
    adamas_nt
    Moderator Programowanie

    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?

    0
  • #7 31 Gru 2012 11:40
    101pawel
    Poziom 24  

    e-mega napisał:
    ...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 napisał:
    . "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 napisał:
    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 napisał:
    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

    0
  • #8 02 Sty 2013 19:58
    uklad_dw
    Poziom 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

    0
  • #9 02 Sty 2013 21:14
    101pawel
    Poziom 24  

    uklad_dw napisał:
    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 napisał:
    ...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ć.

    0
  • #10 02 Sty 2013 21:48
    uklad_dw
    Poziom 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ć??

    0
  • #11 03 Sty 2013 11:24
    arnoldziq
    Moderator Programowanie

    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 : " .

    0
  • #12 03 Sty 2013 19:33
    23844
    Użytkownik usunął konto  
  • #13 03 Sty 2013 20:54
    101pawel
    Poziom 24  

    arnoldziq napisał:
    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

    0
  • #14 07 Sty 2013 20:28
    uklad_dw
    Poziom 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ć??

    0
  • #15 07 Sty 2013 21:02
    marcinj12
    Poziom 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

    0
  • #16 07 Sty 2013 22:04
    adamas_nt
    Moderator Programowanie

    :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...

    0
  • #17 08 Sty 2013 20:07
    uklad_dw
    Poziom 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ę.

    0
  • Pomocny post
    #18 08 Sty 2013 23:37
    marcinj12
    Poziom 40  

    uklad_dw napisał:
    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:
    Kod: vb
    Zaloguj się, aby zobaczyć kod


    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:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #19 09 Sty 2013 18:33
    uklad_dw
    Poziom 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ę:)

    0
  • #20 10 Sty 2013 21:11
    uklad_dw
    Poziom 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ą:)

    0
  • #21 10 Sty 2013 21:37
    adamas_nt
    Moderator Programowanie

    uklad_dw napisał:
    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...

    0
TME logo Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
TME Logo