VBATools

Ukrycie tekstu niewypełnionych elementów obiektów formularza

by on Nov.02, 2011, under Porady, Word

W MS Word, tworzenie formularza realizuje się po przez umieszczenie kontrolek w dokumencie. W zależności od ich rodzaju możemy wyposażyć je w listę wyboru, datę opartą na kalendarzu, tekst umieszczony w polu lub inny formant.

W_formularz

Rys.1 Tworzenie formularza

Jednakże podczas wydruku dokumentu możemy napotkać na fakt iż elementy niewypełnione są drukowane jako podpowiedzi nie jako pusta, niewypełniona przestrzeń.

W_formularz_widok

Rys.2 Efekt nieporządany

Jak ukryć teksty, które są zbędne?

Aplikacja nie posiada ustawień które modły by być pomocne w tym przypadku. Jedynym ratunkiem jest oprogramowanie pliku.

MS Word w swoich procedurach zdarzeniowych nie posiada funkcjonalności jaka jest częścią Excela: BeforePrint

Należy w tym celu wbudować klasę, która będzie realizowała ten cel.

Wpierw należy uruchomić developera VBA [Alt+F11] utworzyć klasę i postępować dalej zgodnie z poniższą instrukcją.

'--------------- Umieść w ThisDocument
Option Explicit
Dim oAppClass As New Class1

Private Sub Document_Open()
 Set oAppClass.oApp = Word.Application 'aby przetestować bez restartu pliku należy uruchomić tą procedurę
End Sub

'--------------- Umieścić w klasie Class1
Option Explicit

Public WithEvents oApp As Word.Application
Private Sub oApp_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
'MVP OShon from VBATools.pl
Dim sh As ContentControl
With Application.ActiveDocument
 For Each sh In .ContentControls
 If sh.ShowingPlaceholderText = True Then sh.Range.Font.Color = wdColorWhite
 Next
.PrintOut Background:=False
 For Each sh In .ContentControls
 If sh.ShowingPlaceholderText = True Then sh.Range.Font.Color = wdColorGray50
 Next
End With
End Sub

Aby plik realizował kod należy go zapisać w standardzie *.docm, oraz pamiętać iż uruchomienie makr jest konieczne.

Wydruk pliku z kodem:

W_formularz_wydruk

Rys.3 Podgląd wydruku dokumentu

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

:, , , ,

2 Comments for this entry

  • Zyga

    W związku z rozwiązaniem “Ukrycie tekstu niewypełnionych elementów obiektów formularza” mam pytanie. Czy jest możliwe żeby aby plik realizował kod w standardzie .dotm?

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of Joanna Subik
Profile picture of Anorak
Profile picture of marcinmachalowski
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