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.

[Rozwiązano] Jak wyłączyć zamykanie skoroszytu?

adamixlg 22 Lut 2018 09:34 432 7
  • #1 22 Lut 2018 09:34
    adamixlg
    Poziom 2  

    Mam dwa skoroszyty Workbooks(1) i Workbooks(2). Otwierając Workbooks(1) otwieram z automatu Workbooks(2). Zamykając Workbooks(1) zamykam z automatu Workbooks(2) procedurą Private Sub Workbook_BeforeClose(Cancel As Boolean).
    Jak wyłączyć zamykanie skoroszytów w Workbooks(2) tak żeby możliwe było zamykanie tylko z Workbooks(1).

    0 7
  • #2 22 Lut 2018 15:22
    kinggustav
    Poziom 20  

    Żeby zablokować zamykanie skoroszytu musisz napisać obsługę takiego samego wyjątku dla drugiego skoroszytu a w niej dać Cancel = True.
    Tylko trzeba będzie pokombinować, żeby to nie zadziałało gdy sam będziesz chciał zamknąć tą procedurką.

    0
  • Pomocny post
    #3 22 Lut 2018 22:11
    adamas_nt
    Moderator Programowanie

    kinggustav napisał:
    Tylko trzeba będzie pokombinować
    W zasadzie ograniczyłbym tylko dla przypadku, gdy Workbooks1 jest otwarty.

    0
  • #4 23 Lut 2018 05:11
    adamixlg
    Poziom 2  

    Napisałem takie makra
    w pliku2.xlsm

    Kod: vba
    Zaloguj się, aby zobaczyć kod

    i jest OK. Ponieważ jest plik1.xlsm otwarty plik2.xlsm nie można zamknąć.

    W pliku1.xlsm
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    I tu wymiękam. Nie zamknie pliku2 bo plik1 jest otwarty. Owszem, potem makro zamyka plik1 ale plik2 pozostaje wciąż otwarty. Zależy mi jednak żeby plik2 również się zamknął.

    0
  • #5 23 Lut 2018 08:16
    rajszym
    Poziom 19  

    adamixlg napisał:
    Jak wyłączyć zamykanie skoroszytów w Workbooks(2) tak żeby możliwe było zamykanie tylko z Workbooks(1).

    adamixlg napisał:
    I tu wymiękam. Nie zamknie pliku2 bo plik1 jest otwarty.

    Najpierw zastanów się, co właściwie chcesz osiągnąć.
    Najprościej: wyrzuć procedury Workbook_BeforeClose z obu plików.

    0
  • Pomocny post
    #6 23 Lut 2018 08:28
    adamas_nt
    Moderator Programowanie

    W plik1 wyłącz obsługę zdarzeń, żeby nie wykonało procedury w Plik2

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    0
  • #7 23 Lut 2018 09:00
    kinggustav
    Poziom 20  

    Czyli, jak pisałem, trzeba pokombinować.
    Najprościej użyć jakiejś zmiennej globalnej sterującej tym czy teraz można zamykać czy nie. Już pewnie rozumiesz, co mam na myśli.
    Jeszcze prościej, praktycznie bez zmian, najpierw zamknąć ten skoroszyt, który i tak zamkniesz za chwilę.

    0
  • #8 24 Lut 2018 04:41
    adamixlg
    Poziom 2  

    Dzięki za zaangażowanie Panowie.

    Adamas masz u mnie browara :spoko:


    Dodano po 1 [minuty]:
    Temat zamknięty.

    0