Jak w dokumencie MS Word można usunąć wszystkie tabele i grafiki?

Jak w dokumencie MS Word można usunąć wszystkie tabele i grafiki?

Tak, można automatycznie usunąć wszystkie tabele lub grafiki korzystając ze skryptów vba MS Word. W dokumencie liczącym kilkaset stron znajduje się około stu tabel i grafik, które utrudniają ciągłe czytanie dokumentu. Ręczne usuwanie każdej pojedynczej tabeli lub grafiki to żmudne rozwiązanie. Proponuję napisanie i uruchomienie prostych skryptów, które wykonają to zadanie automatycznie. Co to są skrypty i jak ich używać opisane zostało w artykule na blogu JAWS: Jak przy pomocy JAWS korzystać z VBA dla aplikacji w MS Word?

Usuwanie wszystkich tabel.
Poniżej znajduje się listing skryptu usuwającego wszystkie tabele w aktywnym dokumencie MS Word, (usuwatabele.bas,  plik w załączniku):

Sub UsuwaWszystkieTabele()

’deklaracja zmiennej jako tabela

     Dim tabela As Table

     For Each tabela In ActiveDocument.Tables

’wyszukuje w aktywnym dokumencie wszystkie tabele i usuwa je

         tabela.Delete

     Next tabela

End Sub

Usuwanie wszystkich grafik.
W dokumencie MS Word może znajdować się wiele grafik jako kształty, figury, rysunki itp. Możemy to sprawdzić naciskając skrót klawiszowy JAWS, Ctrl + Shift + O, aby wyświetlić listę wszystkich obiektów w linii (in line shape). Pamiętając o tym, że grafiki mają przypisany typ InlineShape, możemy napisać makro usuwające wszystkie grafiki, podobne do tego usuwające wszystkie tabele. Poniżej listing tego makra, a plik makra znajduje się w załączniku jako usuwagrafiki.bas.

Sub UsuwaWszystkieGrafiki()

’deklaracja zmiennej grafika jako objekt w linii

     Dim grafika As InlineShape

     For Each grafika In ActiveDocument.InlineShapes

’wyszukuje w aktywnym dokumencie wszystkie grafiki i usuwa je

         grafika.Delete

     Next grafika

End Sub

Dodatkowo poniżej pokazowe makro zawierające funkcję oczyszczającą dokument docx, która nie zwraca żadnej wartości. Dodano numerację wierszy, aby dokładniej opisać działanie makra. W załączniku znajduje się poprawne makro jako makro1pokazowe.bas.

1. Option Explicit

2.

3. Function Strip_Hyperlinks_Bookmarks_Fields()

4. Dim myLink As Hyperlink

5. Dim myBookmark As Bookmark

6. Dim myField As Field

7. With ActiveDocument

8. For Each myLink In .Hyperlinks

9. myLink.Delete

10. Next myLink

11. For Each myBookmark In .Bookmarks

12. myBookmark.Delete

13. Next myBookmark

14. For Each myField In .Fields

15. myField.Unlink

16. Next myField

17. End With

18. End Function

19.

20. Sub Clean_Up_Document_for_Conversion()

21. Call Strip_Hyperlinks_Bookmarks_Fields

22. 'inne funkcje oczyszczające dokument

23. End Sub

Objaśnienia jak działa to pokazowe makro:

  • Wiersz 1 zawiera instrukcję Option Explicit dla modułu, aby wymusić jawne deklaracje wszystkich zmiennych.
  • Wiersz 2 to odstępnik.
  • Wiersz 3 uruchamia funkcję o nazwie Strip_Hyperlinks_Bookmarks_Fields, która usuwa wszystkie hiperłącza, zakładki i pola z aktywnego dokumentu. Funkcja działa aż do instrukcji End Function w wierszu 18.
  • Wiersz  4 deklaruje zmienną o nazwie myLink jako typu Hyperlink.
  • Wiersz 5 deklaruje zmienną o nazwie myBookmark jako należącą do typu zakładki.
  • Wiersz 6 deklaruje zmienną o nazwie myField jako typu pole.
  • Wiersz 7 rozpoczyna instrukcję With, która działa z obiektem ActiveDocument (aktywny dokument), i jest kontynuowana do instrukcji End With w wierszu 17.

Instrukcja With zawiera trzy pętle For Each … Next.

  • Pierwsza pętla For Each … Next, w wierszach od 8 do 10, przechodzi przez każdy obiekt myLink w kolekcji Hyperlinks bieżącego dokumentu. Wiersz 9 używa metody Delete do usuwania po kolei każdego z łączy.Usunięcie hiperłącza usuwa łącze z dokumentu, ale pozostawia tekst, który był wyświetlany dla hiperłącza.
  • Druga pętla For Each … Next, w wierszach od 11 do 13, działa z każdym obiektem myBookmark w kolekcji zakładek. Wiersz 12 wykorzystuje metodę Delete, aby kolejno usunąć każdą z zakładek. Usunięcie zakładki usuwa znacznik z dokumentu, ale pozostawia wszelki tekst lub inny obiekt zawarty w zakładce.
  • Trzecia pętla For Each…Next, w wierszach od 14 do 16, działa z każdym obiektem myField w kolekcji pola. Wiersz 15 używa metody Unlink, aby rozłączyć kolejno każde z pól. Odłączenie pola pozostawia zawartość pola w dokumencie jako tekst lub obiekt, ale usuwa łącze do pola.
  • Wiersz 17 zawiera instrukcję End With, która kończy instrukcję With, a wiersz 18 zawiera instrukcję End Function, która kończy funkcję.
  • Wiersz 19 to odstępnik.
  • Wiersze od 20 do 23 zawierają krótką pod procedurę, która po prostu wywołuje funkcję Strip_Hyperlinks_Bookmarks_Fields.
  • Wiersz 22 zawiera komentarz stwierdzający, że pod procedura wywołałaby inne funkcje czyszczące, ale nie zostały one jeszcze napisane.

Załączniki:

 

Dodaj komentarz

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