Wyłączenie możliwości przerywania makra

W wielu firmach stworzone są różnego rodzaju formularze, w których zaszyta jest funkcjonalność. Bardzo często robione jest to za pomocą makr VBA. Makra mogą robić różne czynności, których użytkownik nie powinien móc przerwać. Należy zdać sobie sprawę, że przerwanie wykonywania makr zaszytych w arkuszu może doprowadzić do bardzo poważnych konsekwencji.

Przykładowo, jeżeli arkusz łączy się z bazą i do niej to zapisuje informacje to może okazać się, że wykona, tylko część operacji, które powinny zostać wykonane. Doprowadzi to do problemu ze spójnością systemu bazodanowego. Inny problem pojawia się, gdy staramy się ograniczyć możliwości edycji niektórych obszarów w Excelu na podstawie logionu, bądź też nazwy użytkownika. Wtedy przerwanie działania skryptu może spowodować, że użytkownik nagle uzyska nieograniczony dostęp do pliku. Podobny problem można spotkać, gdy mamy zabezpieczony plik Excela i w makrze chcemy zmienić wartość komórki, która jest zabezpieczona. W takiej sytuacji należy najpierw zdjąć zabezpieczenie, następnie zmienić wybrana komórkę, a na koniec przywrócić z powrotem zabezpieczenia. Jak widać i w tym scenariuszu występuje miejsce w którym plik Excela jest niezabezpieczony.

Ale przejdźmy do rzeczy. Wielu użytkowników Excela nie daje sobie sprawy, że może przerwać działania wykonywanie makr w Excelu. I całe szczęście. Ten brak wiedzy powoduje, że można czuć się bezpiecznym. Niestety w każdej firmie znajdą się osoby, które posiadają większą wiedzę. I tak szczerze mówiąc za bardzo nie można się ustrzec. Jeśli będą chciały znaleźć sposób na ominięcie naszych zabezpieczeń to na pewno to zrobią. Ale zawsze można im trochę poprzeszkadzać.

Wróćmy, więc do podstawowego problemu – przerywanie działania makr. W Excelu jest zaimplementowany skrót klawiszowy Ctrl + Break, który pozwala na zatrzymanie wykonywania makr. Naciśnięcie tego skrótu powoduje, że Excel przestaje wykonywać dalsze kroki makra od momentu, w którym się znajduje i wraca do arkusza. Wydawać mogłoby się, że sytuacja jest tragiczna ponieważ nie ma możliwości zmiany większości skrótów klawiszowych w Excelu. Ale w tym przypadku programiści Microsoftu pozostawili sobie furtkę i dali nam do dyspozycji właściwość – Application.EnableCancelKey.

  • xlDisabled – wyłącza możliwość przerywania makr skrótem klawiszowym,
  • xlInterrupt – przywraca działanie skrótu Ctrl + Break.

Wystarczy teraz zmienić dowolnym miejscu w kodzie VBA zmienić wartość tej właściwości i od tego momentu zostanie wyłączona możliwość przerywania makr, bądź też zostanie ponownie włączona ta funkcjonalność. Należy tylko pamiętać, że warto jest to zrobić na początku otwierania arkusza kalkulacyjnego, tak aby użytkownik miał już od samego początku odpowiednio ustawione zabezpieczenia.

Opublikowano: 14 styczeń 2011, Kategorie: Makra / VBA ,

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">