Ukrycie tekstu niewypełnionych elementów obiektów formularza
napisane przez Oskar w dniu środa, 2 Listopad, 2011, w kategorii 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.

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

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:

(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.


