Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wywołanie UserForm - i zablokowanie excela

etiene8912 17 Wrz 2011 14:18 11805 13
  • #1 17 Wrz 2011 14:18
    etiene8912
    Poziom 11  

    Witam,
    posiadam skoroszyt z 12 arkuszami, stworzyłem UserForm z przyciskami, które drukują te skoroszyty
    na przykład:
    przycisk 1 - drukuj skoroszyt 1

    userForm włącza się wraz ze startem arkusza, i w tle pojawia się plik z 12 arkuszami, - chciałbym aby wraz ze startem arkusza włączało sie tylko userForm - natomiast aby skoroszyt uruchamiał się zminimalizowany.
    Bardzo proszę o sugestie

    0 13
  • #2 17 Wrz 2011 23:53
    101pawel
    Poziom 25  

    W procedurze UserForm_Initialize wstaw:
    Application.WindowState = xlMinimized

    Pozdrawiam

    0
  • #3 18 Wrz 2011 12:04
    etiene8912
    Poziom 11  

    okno userform wywołuję tak:

    Private Sub Workbook_Open()
    WYDRUK_ETYKIET.Show
    End Sub

    w moim przypadku najpierw włącza się excel - potem userform - następnie arkusze się minimalizują a skoroszyt nie - a chodzi mi o to aby cały arkusz włączał się zminimalizowany a userform zmaksymalizowane

    0
  • #4 18 Wrz 2011 12:14
    Ksysiek
    Poziom 14  

    To powinno działać:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Jeśli dodatkowo chcesz, aby arkusze ukryły się w ten sposób, aby tylko przez VBA można było je odkryć to dodaj:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    A gdy później chcesz je odkryć używasz polecenia w VBA:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    1
  • #5 18 Wrz 2011 13:06
    etiene8912
    Poziom 11  

    przy drugim poleceniu pojawia mi się

    Ustawienie właściwości Visible klasy Worksheet nie jest możliwe.

    natomiast pierwszy sposób zrobiłem - i najprawdopodobniej przy nim zostanę.

    jak zrobić to aby zamknieice Userform spowodowało zamknięcie Excela ?

    0
  • #6 18 Wrz 2011 14:15
    Ksysiek
    Poziom 14  

    Błąd nie wiem dlaczego ci wyskakuje bo u mnie jak mam tak jak ci podałem to ciała dobrze. A jeśli chodzi o zamknięcie excela to jeśli zamykasz jakimś przyciskiem to musisz dać przy nim :

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    A jeśli chodzi ci też o to żeby nikt nie wyszedł do excela przez zamknięcie UserForm Alt+F4 to musisz ustawić zdarzenie exit dla user form i tam też wpisać to co podałem wyżej.

    0
  • #7 18 Wrz 2011 14:19
    etiene8912
    Poziom 11  

    Jest to projekt który robię dla mojego pracodawcy w nadzieji na podwyżkę - w firmie jest Excel 2003 a z tego co widzę wykorzystujesz Excela 2007 - zaraz to przetestuję co napisałeś.

    0
  • #8 18 Wrz 2011 21:47
    101pawel
    Poziom 25  

    etiene8912 napisał:
    Jest to projekt który robię dla mojego pracodawcy

    Jak masz za to dostać podwyżkę, to należy projekt dopracować ;)
    Jak napisałem Ci w pierwszym poście, w procedurze inicjującej UserForm masz wstawić polecenie minimalizacji Excela czyli:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Ale aby UserForm pozostał widoczny w normalnej, czyli zmaksymalizowanej wielkości, a zminimalizowany został tylko skoroszyt, należy dokonać zmiany w metodzie "'Show". Otwórz "Properties" dla Twojego UserForm i zmień właściwość ShowModal z domyślnej True na False. Jest to warunek niezbędny by po otwarciu pliku na ekranie pozostał UserForm, a skoroszyt wylądował na pasku.
    Druga sprawa, to zamknięcie Excela wraz zamknięciem UserForm. Tu również musisz napisać kawałek kodu dla UserForm:
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    Powyższe zadziała na zamknięcie okna UserForm jego wbudowanym przyciskiem zamknij, czyli [x]. Jeśli wstawisz na Formie swój przycisk zamknij, to przypisz mu również powyższą procedurę. Powyższe procedury działają w każdej wersji Excela.
    Pozdrawiam

    0
  • #9 21 Wrz 2011 03:28
    etiene8912
    Poziom 11  

    Powyższe kody działają super - bardzo dziękuję - z jakich pozycji korzystałeś aby się nauczyć VBA ? Bardzo zależy mi na dobrej znajomości tego narzędzia. Dziś jak troszkę odetchnę dołoże jeszcze dwa moduły i zapewne pojawię się na forum z pytaniami.

    Po włączeniu arkusza Excel się minimalizuje, na ekranie zostaje tylko UserForm, ale jak kliknę w Excel na pasku to pojawia się cały arkusz - czy nie da się zablokować tej możliwości ? Chodzi mi o to, aby nie można było pokazać arkusza.

    0
  • #10 22 Wrz 2011 22:12
    101pawel
    Poziom 25  

    etiene8912 napisał:
    ...jak kliknę w Excel na pasku to pojawia się cały arkusz - czy nie da się zablokować tej możliwości ? Chodzi mi o to, aby nie można było pokazać arkusza.

    Najprościej zminimalizowany plik Excela ukryć. Rozszerz procedurę UserForm_Initialize o linijkę kodu wykorzystującą właściwość "Visible"
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Jednocześnie musisz zastosować jakieś rozwiązanie umożliwiające odkrycie Excela. Sposobów mniej lub bardziej wyrafinowanych jest bez liku. Myślę, że prostym i dość eleganckim sposobem będzie dodanie na Formę przycisku uruchamiającego okno z pytaniem o hasło do odkrycia pliku. Na upartego można by "jawny" tekst hasła zamienić na zwyczajowe gwiazdki, ale póki co niech tak pozostanie.
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Aby wszystko grało jak się należy wstaw jeszcze w procedurze Userform_QueryClose linijkę Application.Visible = True
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Ta wstawiona linia odkrywająca Excela bezpośrednio przed zamknięciem nie jest obowiązkowa, ale niekiedy - w jakichś kombinacjach wersji Windowsa z Officem dzieją się różne czary nie pozwalające na Quit bez wcześniejszego Visible, więc podaje Ci to zapobiegawczo ;)
    Pozdrawiam

    0
  • #11 05 Kwi 2013 11:12
    marcindargiewicz
    Poziom 10  

    Witam,
    fajne podpowiedzi ale czy mógłbyś podać jakąś podpowiedź która zamieniłaby hasło z tekstu na gwiazdki i/lub dał możliwość przełączenia.

    Pozdrawiam.
    Marcin Dargiewicz

    0
  • #12 09 Lis 2015 15:03
    Hemikalny
    Poziom 9  

    Cześć,

    A można to tak ustawić aby pojawiał się sam userform a na nim przejście do Excela np jakiś button ?

    0
  • #13 10 Lis 2015 11:43
    kinggustav
    Poziom 19  

    Oczywiście wiesz, że jest kilka prostych metod otwarcia pliku Excela nawet tak zabezpieczonego? Warto pamiętać o zabezpieczeniu makr hasłem (tam pewnie zapiszesz jawnie hasło), w nowych Excelach złamanie ich nie jest już trywialne, powinno wystarczyć.
    Czy te chronione dane muszą "siedzieć" w Excelu, który musisz otwierać, bo tam jest makro?

    1
  • #14 10 Lis 2015 12:01
    Hemikalny
    Poziom 9  

    Według mojej fantazji chciał bym aby wyglądało to tak:

    startuje z pliku Exela pokazuje mi się sam formularz UserForm z polami do wyboru i wypełnienia. Użytkownik wybiera i wprowadza dane klika zapisz i dane lądują w odpowiednich kolumnach w odpowiednim arkuszu. A tu chodzi mi o to aby otworzył się sam UserForm bez okienek Excela w tle zminimalizowanych czy tam jakich. Bo jak na razie udało mi się zrobić że pokazuję mi się formularz "UserForm" i w tle zminimalizowane okna i wstążki Excela... których ma nie być.

    0