Jak usunąć pustą stronę w programie Word w VBA
Visual Basic for Applications (VBA) to język, którego programiści używają do rozszerzania domyślnych funkcji programu Word. Za pomocą VBA programiści mogą zautomatyzować wiele ręcznych procedur krok po kroku, które użytkownicy programu Word regularnie wykonują. Usuwanie pustej strony za pomocą VBA składa się zasadniczo z dwóch zadań: zaznaczenia strony i określenia, czy zaznaczenie to jest puste, czy nie. Podstawową korzyścią płynącą z użycia VBA do wykonania tych zadań jest oszczędność czasu wynikająca z braku konieczności wykonywania ich ręcznie.
- Visual Basic for Applications (VBA) to język, którego programiści używają do rozszerzenia domyślnej funkcjonalności Worda.
- Usuwanie pustej strony za pomocą VBA składa się zasadniczo z dwóch zadań: zaznaczenia strony i określenia, czy to zaznaczenie jest puste, czy nie.
Otwórz dowolny dokument Worda składający się z kilku stron. Upewnij się, że co najmniej jedna lub dwie strony zawierają tylko znaki niedrukowalne, takie jak powrót karetki lub podział strony, a pozostałe strony mają co najmniej jeden znak drukowalny.
Otwórz zintegrowane środowisko programistyczne VBA (IDE), naciskając Alt plus F11. Naciśnij nagłówek menu "Wstaw", a następnie "Moduł", aby wstawić nowy moduł do dokumentu. W tym module utworzysz program VBA.
Wpisz lub wklej do nowego modułu kodu następującą podprogramową procedurę:
Public Sub deleteBlankPage()
Selection.GoTo What:=wdGoToBookmark, Name:="\"
End Sub
Ta podprogramowa procedura kieruje VBA do określonej, ukrytej zakładki, którą Word utrzymuje dla każdego dokumentu. Ukryta zakładka nosi nazwę "strona" i odnosi się do strony kontynuującej bieżące zaznaczenie lub punkt wstawiania.
Wpisz ten kod do obszaru poniżej deklaracji z poprzedniego kroku, która zaczyna się od "Zaznaczenie":
If isBlankSelection Then
Selection.Delete
End If
Ta część kodu kieruje VBA do wywołania funkcji (którą napiszesz w kolejnym kroku), która określa, czy bieżące zaznaczenie jest puste, czy nie. Jeśli tak, kod kieruje VBA do usunięcia zaznaczenia.
Po instrukcji "End Sub" wpisz następujący kod, aby zaimplementować funkcję "isBlankSelection":
Public Function isBlankSelection()
For Each c In Selection.Characters
If (c <> vbCr And c <> vbTab And c <> vbFormFeed And c <> " ") Then
isBlankSelection = False Exit Function
End If
Next
isBlankSelection = True
End Function
Ta funkcja wykonuje serię iteracji (czyli "pętli") po poszczególnych znakach aktualnie zaznaczonego tekstu. Blok kodu "if" wykonuje serię testów na znaku, aby określić, czy znak jest pusty. "Puste" są zdefiniowane jako te niedrukujące znaki: Carriage return, tabulator, form feed lub spacja. Jeżeli aktualnie testowany znak nie jest żadnym z wymienionych, funkcja natychmiast zwraca "False", co oznacza, że zaznaczenie nie jest puste.
- Znaki If (c <> vbCr And c <> vbTab And c <> vbFormFeed And c <> " ") Then End If Next isBlankSelection = True End Function Funkcja ta wykonuje serię iteracji (tj.
- "pętli") przez poszczególne znaki aktualnie zaznaczonego tekstu.
- Jeśli aktualnie testowanym znakiem nie jest żaden z wymienionych przed chwilą, funkcja natychmiast zgłasza z powrotem "False", co oznacza, że zaznaczenie nie jest puste.
Naciśnij Alt+F11, aby powrócić do dokumentu Worda i kliknij dowolną stronę z niedrukowanymi znakami.
Naciśnij Alt+F8, aby wyświetlić listę makr VBA, a następnie kliknij dwukrotnie pozycję "deleteBlankPage", aby uruchomić makro. Twój program zaznaczy, a następnie usunie stronę.
Kliknij dowolną stronę z widocznymi znakami i uruchom program ponownie. Tym razem program nie usunie strony.