VBATools

Drukuj formularz gdy wypełniony

by on Nov.08, 2014, under Porady, Word

W aplikacji MS Word nie ma zdarzenia typu _beforeprint, pozwalającego na reakcję przed podjęciem wydruku*. Jednak w niektórych przypadkach chcemy odstąpić od drukowania, gdy np. w formularzu nie wypełniono wszystkich niezbędnych pól.

Aby poradzić sobie z takim przypadkiem musimy podłączyć kod, który sprawdzi wszystkie pola pod względem obecności tekstu (lub te na których nam zależy tworząc wyjątki). W przypadku braku tekstu, procedura VBA jaką wprowadzimy do naszego dokumentu wyświetli komunikat informacyjny zamiast dopuścić do jego wydrukowania.

Uruchomienie kodu musi być w tym przypadku inicjowane odrębnym przyciskiem osadzonym w menu (szybkie kroki lub wprowadzona do struktury XMLowej pliku) lub wprost w dokumencie (z podpiętym makrem), a dokument musi zostać zapisany z rozszerzeniem .docm aby wprowadzony kod nie uległ usunięciu. Rozwiązaniem mniej inwazyjnym jest też uruchomienie przez [Alt+F8]

Należy pamiętać że zwykłe drukowanie nie bądzie kontrolowane przez kod. Nie wykluczone że w przyszłych wersjach będzie można przedstawioną poniżej procedurę podłączyć do uzupełnionego zdarzenia.

 

Sub Drukuj_formularz() 
'MVP OShon VBATools.pl 
Const c$ = "Nie wypełniono wszystkich pól formularza!" 
Dim b As Bookmark, d As Boolean 
For Each b In ActiveDocument.Bookmarks 
    If Len(Trim(b.Range.Fields(1).Result.Text)) = 0 Then _ 
     d = True: MsgBox c, vbExclamation, "VBATools.pl": Exit For 
Next 
If d = False Then Application.PrintOut 
End Sub

* Można stworzyć klasę reagującą na te zdarzenie (o tym tutaj) i wywołać tą procedurę.

Instrukcja podłączenia kodu do środowiska developerskiego w MS office dostępna pod tym artykułem.

W przypadku kiedy zachodzi potrzeba tworzenia seryjnego formularzy, bądź hurtowego pobierania danych z już utworzonych oto rozwiązanie w formie dodatku: Dane szablonów Word

:, , , ,

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of marcinmachalowski
Profile picture of Joanna Subik
Profile picture of Anorak
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borzęcka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of Łukasz Kałużny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spychała