Wątek przeniesiony 2022-06-29 18:26 z Inne języki programowania przez Riddle.

Blank page przy ukrywaniu sekcji

0

Witam, mam mały problem, otóż mam 10 sekcji w Wordzie. Przy ich ukrywaniu zostają mi puste strony i nie mam pojęcia jak sobie z tym poradzić.

Może trochę to zobrazuje.
Mam 6 stron podzielonych na 3 sekcje. Pierwsza sekcja ma 2 strony (1, 2), druga ma 3 strony (1, 2, 3) i ostatnio ma 1 stronę, a wszystkie numerują się od pierwszej. Ukrywając pierwsza i trzecią:

Public Sub Hide()
    ActiveDocument.Sections(1).Range.Font.Hidden = True
    ActiveDocument.Sections(2).Range.Font.Hidden = False
    ActiveDocument.Sections(3).Range.Font.Hidden = True
End Sub

zostawia mi drugą sekcję, która niestety jest nadzieniem kanapki, w której kromkami są puste strony (strona 1 [pusta], 1, 2, 3 strona drugiej sekcji, strona 1 - czyli piąta ale numerowana od 1[pusta]). Jak mogę się ich pozbyć nie uszkadzając sekcji ukrytych? Znalazłem jakieś makro do usunięcia pustych stron ale psuje mi to potem dokument

#Edit
Sekcje mam podzielone jako "następna strona"

0
Neutral napisał(a):

Jeśli możesz, bardziej opisz problem, czym jest "ukrywanie sekcji", jeśli o to chodzi.

https://support.office.com/en-ie/article/delete-a-page-in-word-174fedd3-b4e5-42e4-a4d0-5e25127a1404
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_word-mso_other/getting-hidden-pages-with-i-use-section-break/140d5dd7-e4ef-46fe-92d3-99f2585cfde0

Układ strony -> znaki podziału i tam są sekcje. Sekcja może być ciągła, od następnej strony, od następnej strony parzystej lub nieparzystej. Przykładowo mam dokument podzielony na 3 sekcje. Pierwsza ma 10 stron, druga 5 i trzecia ileś tam, każda jest numerowana od strony 1. W vba odwołuje się do drugiej sekcji i ustawiam jej wartość Hidden na true. Ona znika, więc zostaje pierwsza i druga. Powinno być 10 stron, a potem te ileś. Niestety po ukryciu między 1 a 3 sekcją zostaje pusta strona.

0

Powiem, że nie wiem jak wykonać te zadanie. To, co zostało zaprezentowane poniżej to chyba obejście problemu. Jeśli poniższy kod wykonuje coś niepożądanego - sprawdź, żeby nie było, że kasuje jakieś dane. Ogólnie to skopiowałem ten kod z: https://social.msdn.microsoft.com/Forums/en-US/9837256a-be38-4516-a08d-ab48e9c076f2/macro-to-remove-all-the-blank-pages-in-the-document?forum=worddev lekko go modyfikując.

Sub Hide2()

With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "^12[^12^13]{1,}"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With

End Sub

Powyższy kod, kodem VBA.

https://social.msdn.microsoft.com/Forums/en-US/9837256a-be38-4516-a08d-ab48e9c076f2/macro-to-remove-all-the-blank-pages-in-the-document?forum=worddev
https://social.msdn.microsoft.com/Forums/office/en-US/202881b7-e053-4712-b1c8-c6cf06a60462/remove-blank-pages-from-docx-using-word-interop

Liczba 12 oznacza chyba, "Page Break", link: https://sites.google.com/site/myvbacoding/text/chr-values . Tych "kodów", poszukaj powinny Ci się przydać.

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/character-set-0127#see-also
https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/character-set-128255

1 użytkowników online, w tym zalogowanych: 0, gości: 1