Centrum Skrypciarzy - Microsoft Office

Jak dodać wyśrodkowane numery stron do stopki dokumentu programu Word?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak dodać wyśrodkowane numery stron do stopki dokumentu programu Word?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! ! Potrzebuję informacji, jak umieścić wyśrodkowane numery stron w dokumencie programu Word. Czy macie może jakieś sugestie?

-- AW

Cześć Skrypciarze! Odpowiedź

Cześć, AW. Tak między Bogiem a prawdą, skromna osoba odpowiedzialna za niniejsze artykuły pozbawiona jest mocy dzielenia się sugestiami. Wszystko to zaś z powodu pewnego zdarzenia sprzed kilku dni, kiedy to otrzymała masowo wysyłaną wiadomość email, która kończyła się następującym zwrotem: „Będziemy wdzięczni za jakiekolwiek opinie oraz sugestie, które pozwoliłyby ulepszyć nasz projekt.”

Będąc zatem osobą trochę naiwną, autor rzeczywiście chciał podzielić się sugestiami, co też uczynił, wysyłając je do nadawcy. Okazało się to później wielkim błędem. W odpowiedzi został bowiem zbesztany primo – przez sprawcę („Ktoś włożył w ten projekt wiele pracy i zaangażowania, więc jeśli stać Pana tylko na krytykę to powinszować”), secundo – swojego szefa oraz, co najlepsze, tertio – własnego szefa („A może tak byś darował sobie dzielenie się przemyśleniami.”). Oszołomiony autor postanowił wtedy juz nigdy nie dzielić się żadnymi sugestiami czy też opiniami.

Więc, jako że w naszej ofercie limit sugestii się juz wyczerpał, jedyne, co możemy Ci zaoferować, to skrypt, dzięki któremu można dodać (wyśrodkowane) numery stron do stopki dokumentu programu Word:

Const wdAlignPageNumberCenter = 1



Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Add()



objDoc.Sections(1).Footers(1).PageNumbers.Add(wdAlignPageNumberCenter)

Prościuteńki skrypt, każdy się chyba zgodzi. Zaczynamy od zdefiniowania stałej wdAlignPageNumberCenter i ustawiamy jej wartość na 1.To instruuje skrypt, że numer strony ma zostać umieszczony w środku stopki. Co jednak jeśli zmienimy zdanie, i nie będziemy chcieli, żeby numer strony był pośrodku obszaru stopki? Nic się nie stało, musimy tylko użyć następujących stałych i ich wartości:

Stała Wartość
wdAlignPageNumberCenter 1
wdAlignPageNumberInside 3
wdAlignPageNumberLeft 0
wdAlignPageNumberOutside 4
wdAlignPageNumberRight 2

Po zdefiniowaniu stałej używamy następujących trzech wierszy kodu, które tworzą widoczne na ekranie wystąpienie obiektu Word.Application, a potem dają nam do pracy nowy, pusty dokument programu Word:

Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Add()

Potem dodajemy jeszcze numery stron przy pomocy pojedynczego wiersza kodu:

objDoc.Sections(1).Footers(1).PageNumbers.Add(wdAlignPageNumberCenter)

Tworzymy obiekt PageNumbers powiązany z pierwszą stopką oraz pierwszą, a zarazem jedyną, sekcją naszego dokumentu. Aby dodać do stopki numery stron przywołujemy metodę Add, podajemy stałą wdAlignPageNumberCenter, która wskazuje, że numery stron mają być wyśrodkowane. Ot, cała filozofia.

Oczywiście jest również wiele innych sposobów, których możemy użyć do numerowania stron, o wiele za dużo dla potrzeb niniejszego artykuły. Jeżeli więc potrzebujecie więcej informacji, zajrzyjcie do Microsoft Word VBA Language Reference (j.ang.) w witrynie MSDN. Dla zachęty jednak chociaż jeden przykład tego, co możecie tam znaleźć. Poniższy skrypt definiuje stałą wdPageNumberStyleLowercaseRoman i przyporządkowuje ją do właściwości NumberStyle:

Const wdAlignPageNumberCenter = 1

Const wdPageNumberStyleLowercaseRoman = 2



Set objWord = CreateObject("Word.Application")

objWord.Visible = True

Set objDoc = objWord.Documents.Add()



objDoc.Sections(1).Footers(1).PageNumbers.Add(wdAlignPageNumberCenter)

objDoc.Sections(1).Footers(1).PageNumbers.NumberStyle = wdPageNumberStyleLowercaseRoman

Teraz quiz. Co robi powyższy skrypt? Jeżeli pomyśleliście sobie, ze pokazuje numery stron jako liczby rzymskie zapisane małymi literami to punkt dla Was, bo to właśnie robi.

Tak przy okazji, poniżej znajduje się lista wszystkich możliwych stylów używanych do numeracji stron. Ważne, żeby pamiętać o własnych ustawieniach językowych, bo niektóre z tych konfiguracji mogą być pozbawione sensu w Waszym języku lub mogą wprowadzić istotne zmiany do dokumentu:

Stała Wartość
wdPageNumberStyleArabic 0
wdPageNumberStyleArabicFullWidth 14
wdPageNumberStyleArabicLetter1 46
wdPageNumberStyleArabicLetter2 48
wdPageNumberStyleHanjaRead 41
wdPageNumberStyleHanjaReadDigit 42
wdPageNumberStyleHebrewLetter1 45
wdPageNumberStyleHebrewLetter2 47
wdPageNumberStyleHindiArabic 51
wdPageNumberStyleHindiCardinalText 52
wdPageNumberStyleHindiLetter1 49
wdPageNumberStyleHindiLetter2 50
wdPageNumberStyleKanji 10
wdPageNumberStyleKanjiDigit 11
wdPageNumberStyleKanjiTraditional 16
wdPageNumberStyleLowercaseLetter 4
wdPageNumberStyleLowercaseRoman 2
wdPageNumberStyleNumberInCircle 18
wdPageNumberStyleNumberInDash 57
wdPageNumberStyleSimpChinNum1 37
wdPageNumberStyleSimpChinNum2 38
wdPageNumberStyleThaiArabic 54
wdPageNumberStyleThaiCardinalText 55
wdPageNumberStyleThaiLetter 53
wdPageNumberStyleTradChinNum1 33
wdPageNumberStyleTradChinNum2 34
wdPageNumberStyleUppercaseLetter 3
wdPageNumberStyleUppercaseRoman 1
wdPageNumberStyleVietCardinalText 56

Trudne to zaiste było zadanie bez robienia jakichkolwiek sugestii!

 Do początku strony Do początku strony

Centrum Skrypciarzy - Microsoft Office